Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.03;
Скачать: CL | DM;

Вниз

Заменить один класс компонентов на другой   Найти похожие ветки 

 
__DATA__   (2006-08-08 12:00) [0]

Сейчас в большом проекте для кнопок используется класс TButton, я хочу заменить все TButton-ы на TNewButton-ы, как мне заменить кнопки во всем проекте, естественно не вручную удаляя и ставя каждую кнопку по отдельности. класс TNewButton наследник от TButton


 
begin...end ©   (2006-08-08 12:04) [1]

type
 TButton = class(TNewButton);


 
DiamondShark ©   (2006-08-08 12:04) [2]

Сохранить dfm в текстовом виде, потом пройтись по текстам и формам какой-нибудь пакетной заменялкой.


 
StriderMan ©   (2006-08-08 12:08) [3]

вот проектик, писал как раз для такой задачи. колбасит и PAS и DFM.

ЗЫ: за глюки и корявый код не отвечаю - дело было давно


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, lvvUtils;

type
 TForm1 = class(TForm)
   edtPath: TEdit;
   Button1: TButton;
   edtSearch: TEdit;
   edtChange: TEdit;
   memLog: TMemo;
   Button2: TButton;
   procedure Button1Click(Sender: TObject);
   procedure  DoFile(const AFileName: string);
   procedure Button2Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.DoFile(const AFileName: string);
var
 FileStream: TFileStream;
 Buf: string;
 ps, l, sft: integer;
 isText: boolean;
begin
 memLog.Lines.Add(AFileName);
 sft := 0;

 FileStream := TFileStream.Create(AFileName, fmOpenReadWrite);
 try
   SetLength(Buf, FileStream.Size);
   FileStream.Seek(0,soFromBeginning);
   if FileStream.Read(Buf[1], 6) <> 6 then exit;
   isText := (Copy(Buf, 1, 6) = "inheri") or (Copy(Buf, 1, 6) = "object") or (ExtractFileExt(AFileName) = ".pas");
   FileStream.Seek(0, soFromBeginning);
   memLog.Lines.Add(IntToStr(FileStream.Read(Buf[1], length(Buf))) + " bytes");
   while true do
   begin
     ps := Pos(edtSearch.Text, Buf);
     if ps = 0 then break;
     if ps > 0 then
     begin
       l := length(edtSearch.Text);
       memLog.Lines.Add("<< " + Copy(Buf, ps, l));
       if not isText then
         buf[ps - 1] := char(length(edtChange.Text));
       Delete(Buf, ps, l);
       sft := sft + (l - length(edtChange.Text));
       insert(edtChange.Text, Buf, ps);
       memLog.Lines.Add(">> " + Copy(Buf, ps, length(edtChange.Text)));
     end;
   end;
   FileStream.Size := FileStream.Size - sft;
   FileStream.Seek(0,soFromBeginning);
   memLog.Lines.Add(IntToStr(FileStream.Write(Buf[1], FileStream.Size)) + " bytes");
 finally
   FileStream.Free;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);

 procedure SearchPath(const APath: string);
 const
   C_MASK: string = "\*.*";
 var
   sr: TSearchRec;
   fp: string;
 begin
   if FindFirst(APath + C_MASK, faAnyFile, sr)=0 then
     try
       repeat
         if (sr.Name <> "..") and (sr.Name <> ".") and ((sr.Attr and faDirectory) <> 0) then
           SearchPath(APath + "\" + sr.Name);
         fp := ExtractFileExt(sr.Name);
         try
           if (fp = ".dfm") or (fp = ".pas")  then
             DoFile(APath + "\" + sr.Name);
         except
           on E: Exception do
             memLog.Lines.Add(E.Message);
         end;        
       until FindNext(sr) <> 0;
     finally
       sysutils.FindClose(sr);
   end;
 end;

begin

 SearchPath(edtPath.Text);

end;

procedure TForm1.Button2Click(Sender: TObject);
var
 s: string;
begin
 s := edtPath.Text;
 if SelectShellFolder("Выберите каталог", 0, s, BIF_NEWDIALOGSTYLE) then
   edtPath.Text := s;
end;

end.


 
Sergey13 ©   (2006-08-08 12:57) [4]

GExpert такое может.
http://www.gexperts.org/


 
Карелин Артем ©   (2006-08-08 14:42) [5]

Правой бутоной на форму - смотреть как текст - найти и заменить...


 
Экспериментатор   (2006-08-08 14:48) [6]


> Sergey13 ©   (08.08.06 12:57) [4]
> GExpert такое может.
> http://www.gexperts.org/

Поддерживаю, проще всего GExpert


 
StriderMan ©   (2006-08-08 14:53) [7]


> Карелин Артем ©   (08.08.06 14:42) [5]

если форм таких десятки или сотни, это не рационально.



Страницы: 1 вся ветка

Текущий архив: 2006.09.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.039 c
2-1155544010
Noname27
2006-08-14 12:26
2006.09.03
ServerSocket и ClientSocket


3-1151045689
novill
2006-06-23 10:54
2006.09.03
Не могу из сервиса подключиться к IB


15-1155203846
ArtemESC
2006-08-10 13:57
2006.09.03
Все время хочу спросить и забываю...


6-1144821895
DelphiN!
2006-04-12 10:04
2006.09.03
Размер сетевого TCP/IP пакета


4-1146964023
Владимир
2006-05-07 05:07
2006.09.03
Перевод монитора в режим stand-by: грябли