irgendwie steh ich gerade auf dem Schlauch.
Ich möchte gern ein eigene Komponente als Inplace-Editor in einem TDrawGrid verwenden. Das funktioniert alles soweit tadellos. Ändere ich jedoch die Formulargröße, so ändert sich die Zellengröße ebenfalls. Ich möchte gern diesen Editor ebenfalls in der Größe mit ändern. Gibt es eine Möglichkeit ein Event zur Zellgrößenänderung abzufangen (was ich nicht glaube) oder wie kann ich in der/die/das Queue vom Mainthread ein eigenes Event platzieren, dass erst nach der Größenänderung des Grids aufgerufen wird.
Ich stell mir das so vor:
Entweder (HitEdit ist mein Inplaceeditor):
Code: Alles auswählen
procedure TForm1.DrawGridDrawCell(Sender: TObject; aCol,
aRow: Integer; aRect: TRect; aState: TGridDrawState);
begin
if (aRow = DrawGrid.Row) and (aCol = DrawGrid.Col) and
((aRect.Left <> HitEdit.Left) or (aRect.Top <> HitEdit.Top) or
(aRect.Right <> HitEdit.Left + HitEdit.Width) or
(aRect.Bottom <> HitEdit.Top + HitEdit.Height)) then
Synchronize(@DrawGridEditorChangeBounds); //Das funktioniert ja nur in einem Thread nicht mit MainThread
...
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
DrawGrid.OnChangeBounds:=@DrawGridChangeBounds;
end;
procedure TForm1.DrawGridChangeBounds(Sender: TObject);
begin
Synchronize(@DrawGridEditorChangeBounds); //Einfach das Synchronize weg- und die Methode zum Einfügen eines Events am Ende der Main Queue hinzudenken
end;
Danke
Michael