AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OnDrawItem in Frames mit dynamischen ComboBoxen

Ein Thema von ruedigeruwe · begonnen am 16. Mär 2011 · letzter Beitrag vom 16. Mär 2011
Antwort Antwort
ruedigeruwe

Registriert seit: 19. Okt 2006
7 Beiträge
 
Delphi 6 Enterprise
 
#1

OnDrawItem in Frames mit dynamischen ComboBoxen

  Alt 16. Mär 2011, 14:58
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:
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.
und hier der Code für das Frame

Code:
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.
wäre super wenn mir mal einer auf die Sprünge helfen könnte.
Uwe R.
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: OnDrawItem in Frames mit dynamischen ComboBoxen

  Alt 16. Mär 2011, 15:10
Was spricht dagegen das event direkt anzusprechen?

Delphi-Quellcode:
ondrawitem := ComboBoxDrawItem1;
.....
.....

with (Control as TCombobox) do//??? kannst Du glaube ich weglassen!
alfold
  Mit Zitat antworten Zitat
ruedigeruwe

Registriert seit: 19. Okt 2006
7 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: OnDrawItem in Frames mit dynamischen ComboBoxen

  Alt 16. Mär 2011, 15:18
Das funktioniert leider auch nicht, da auch dieses ignoriert wird.
Uwe R.
  Mit Zitat antworten Zitat
ruedigeruwe

Registriert seit: 19. Okt 2006
7 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: OnDrawItem in Frames mit dynamischen ComboBoxen

  Alt 16. Mär 2011, 15:31
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;
Uwe R.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz