2010-11-14 2 views
0

У меня есть небольшая проблема. Я пытаюсь создать TPaintBox на TPanel, как это:Проблема с созданием tpaintbox на tpanel

procedure TForm1.mkPaint(S: string); 
var PB: TPaintBox; 
begin 
    PB := TPaintBox.Create(Self); 
    with PB do 
    begin 
    Parent := Panel1; 
    Visible := True; 
    Name := S; 
    Height := 100; 
    Width := 100; 
    Left := 8; 
    Top := 8; 
    // ParentColor := False; 
    Brush.Style := bsSolid; 
    Brush.Color := $00000000; 
    end; 
    Application.ProcessMessages; 
end; 

Теперь, если я изменить родитель PaintBox к Form1, я могу увидеть кисть. Но, с родителем, измененным на Panel1, ничего не происходит. Любая идея, как я могу это исправить?

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

ответ

0

Является ли TPanel видимым для начала?

Кроме того, TPaintBox не имеет общедоступного свойства Brush (возможно, вы думаете о TShape?). TWinControl делает, но TPaintBox не является потомком TWinControl. Это потомок TGraphicControl.

+0

Во всяком случае, я только что получил его. Хотя paintbox успешно создавался, я не знал, что мне пришлось работать с событием onPaint, чтобы сделать его видимым. – Demetris

+0

Что вы сделали, чтобы заставить его работать? –

0

Да, это была моя ошибка. Я изменил код:

pb := TPaintBox.Create(self); 
    with pb do begin 
    Parent := Form1; 
    Visible := true; 
    Top := 1; 
    Left := 1; 
    Width := 250; 
    Height := 100; 
    ParentColor := false; 
    Canvas.Brush.Color := clBlack; 
    Canvas.Font.Size := 12; 
    Canvas.Font.Color := clWhite; 
    Canvas.FillRect(ClientRect); 
    Canvas.TextOut(1, 1, 'test'); 
    end; 

, но без успеха .. я имею в виду, если я уронить компонент PaintBox к форме, то код вступления в силу, как это следует делать, но динамически создавать TPaintBox .... Не знаю.

Смежные вопросы