Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Помогите разобраться


Автор: Гость_Дмитрий 17.3.2005, 13:18
Вопрос состоит вот в чём. Я создал новый класс, наследник от TPanel, в котором перехватывается перерисовка компонента.
Но допустим у меня на форме уже есть куча компонентов типа TPanel. Как мне сделать, чтобы они стали типа TMyPan без потери из свойств и т.д.( т.е. чтобы мне не пришлось всё переделывать).


Вот фрагмент кода:

Код


type
  TMyPan = class(TPanel)
  Panel2:TMyPan;
  protected
    procedure WMPaint(var Message: TMessage); message WM_PAINT;
  end;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
with TMyPan.Create(Self) do
  begin
    Parent := Self;
  end;
end;

procedure TMyPan.WMPaint(var Message: TMessage);
var
  ACanvas: TCanvas;
  b:TBitMap;
begin
  inherited;
  b:=TBitMap.Create;
  b.LoadFromFile('кофейня.bmp');
  ACanvas := TCanvas.Create;
  try
    ACanvas.Handle := GetWindowDC(Handle);
    ACanvas.Brush.Bitmap:= b;
    ACanvas.FillRect(ClientRect);
    ACanvas.Brush.Style := bsClear;
    ACanvas.Pen.Color := clBlack;
    ACanvas.Pen.Width := 5;
    ACanvas.Rectangle(ClientRect);
  finally
    ReleaseDC(Form1.Handle, ACanvas.Handle);
    ACanvas.Free;
  end;
end;



Заранее благодарен.

Автор: Snowy 17.3.2005, 13:30
Исправь файлы *.pas и все *.dfm
Замени везде TPanel на TMyPan

Автор: bursa 17.3.2005, 17:03
Правой кнопкой на форме, View as Text.

Копируешь в буфер обмена всё, что связано с панелями
меняешь = на := (Replace Text)

и вставляешь в в программу на OnCreate формы ( с парентами, коорданвтами и всем остальным)

А менять
Цитата(Snowy @ 17.3.2005, 13:30)
TPanel на TMyPan
нет смысла. Компилятор выдаст ошибку.

Добавлено @ 17:09
и еще вариант- создай компонент TMyPan
и тогда уже как говорил (Snowy @ 17.3.2005, 13:30) делай

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)