Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
11-1132153562
-=Mike=-
2005-11-16 18:06
2006.09.03
Еще пара вопросов по TKOLListView


15-1154928086
Ega23
2006-08-07 09:21
2006.09.03
С Днём рождения! 5 августа


2-1155278166
MSVN
2006-08-11 10:36
2006.09.03
Список запущенных процессов


1-1153172361
Sholom
2006-07-18 01:39
2006.09.03
Прблема с Chart


15-1155408021
Firefly
2006-08-12 22:40
2006.09.03
Дипломная работа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский