![]() |
OnDrawItem in Frames mit dynamischen ComboBoxen
Hallo,
ich verweifel gerade an folgender Konstellation: Ich habe eine Form (frmHaupt), in welcher ein TFrame (fmeFragen) in fmeFragen1 eingebettet ist. Im Frame werden dynamisch Comboboxen erzeugt, welche mit einer OnDrawItem - Eigenschaft angesprochen werden. Die Comboboxen werden erstellt und angezeigt, aber das ONDRAWITEM wird einfach ignoriert und übergangen.
Code:
und hier der Code für das Frame
unit untHaupt;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, untfmeFragen, ComCtrls; type TfrmHaupt = class(TForm) Button1: TButton; fmeFragen1: TfmeFragen; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var frmHaupt: TfrmHaupt; implementation {$R *.dfm} procedure TfrmHaupt.Button1Click(Sender: TObject); begin fmeFragen1.LadeFme(fmeFragen1); end; end.
Code:
wäre super wenn mir mal einer auf die Sprünge helfen könnte.
unit untfmeFragen;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DBCtrls; type TfmeFragen = class(TFrame) procedure LadeFme(Sender:TObject); procedure ComboBoxDrawItem1(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); procedure ComboBoxDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); private { Private-Deklarationen } public { Public-Deklarationen } end; implementation {$R *.dfm} var RunTimeCombo : array of TComboBox; procedure TfmeFragen.LadeFme(Sender:TObject); var x:integer; begin SetLength(RunTimeCombo,1); for x:=0 to length(Runtimecombo)-1 do begin RunTimeCombo[x]:=TComboBox.Create(Sender as TFrame); With RunTimeCombo[x] do begin Parent := (Sender as TFrame); Left := 10; Top :=10; Width:=100; Style := csOwnerDrawFixed; ondrawitem := ComboBoxDrawItem; DroppedDown := true; end; end; end; procedure TfmeFragen.ComboBoxDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin //hier den Verweis auf das Draw bringen ComboBoxDrawItem1(Control,Index,Rect,State); end; procedure TfmeFragen.ComboBoxDrawItem1(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin // with (Control as TCombobox) do begin (Control as TCombobox).Canvas.Brush.Color:=clRed; (Control as TCombobox).Canvas.FillRect(Rect); end; end; end. |
AW: OnDrawItem in Frames mit dynamischen ComboBoxen
Was spricht dagegen das event direkt anzusprechen?
Delphi-Quellcode:
alfold
ondrawitem := ComboBoxDrawItem1;
..... ..... with (Control as TCombobox) do//??? kannst Du glaube ich weglassen! |
AW: OnDrawItem in Frames mit dynamischen ComboBoxen
Das funktioniert leider auch nicht, da auch dieses ignoriert wird.
|
AW: OnDrawItem in Frames mit dynamischen ComboBoxen
da stand ich wohl gerade voll auf dem Schlauch:
Da in der Combobox keine Items vorhanden sind, löst diese daher auch nicht das OnDrawItem-Ereignis aus.
Code:
With RunTimeCombo[x] do
begin Parent := (Sender as TFrame); Left := 10; Top :=10; Width:=100; Style := csOwnerDrawFixed; items.Add('1'); items.Add('2'); ondrawitem := ComboBoxDrawItem1; DroppedDown := true; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz