Форум: "Прочее";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];
ВнизЗаменить один класс компонентов на другой Найти похожие ветки
← →
__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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c