AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi In Nachfahren von TListBox das OndrawItem Ereignis auslösen
Thema durchsuchen
Ansicht
Themen-Optionen

In Nachfahren von TListBox das OndrawItem Ereignis auslösen

Ein Thema von Jazzman_Marburg · begonnen am 11. Apr 2010 · letzter Beitrag vom 11. Apr 2010
Antwort Antwort
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#1

In Nachfahren von TListBox das OndrawItem Ereignis auslösen

  Alt 11. Apr 2010, 19:05
Hallo Gemeinde.

Stecke mal wieder im Universum der Ahnungslosigkeit:
Ich brauchte eine ListBox ohne vertikale Scrollbar, und habe dazu einen Nachfahren erzeugt:

Delphi-Quellcode:
TNoVScrolllistbox = CLASS(TListBox)
  PRIVATE
    PROCEDURE WMNCCalcSize( var msg: TMessage ); MESSAGE WM_NCCALCSIZE;
END;

...
MyListBox := TNoVScrolllistbox.create(self);
...
Mit dem entsprechenden Coding (Code zum Verstecken der Scrollbar) konnte ich also die Scrollbar herausoperieren. Soweit prima.

Nun müßte ich auch das Event OnDrawItem meiner neuen MyListBox herankommen (um ihr einen BMP-Background zu verpassen). Mit einer Standard ListBox auf der Form, ging ich dazu bisher in den Objektinspektor und durch einen Doppelklick auf das entsp. Event konnte ich meinen Code einsetzen.

Meine Frage:
Wie macht ich das mit meinem Nachfahren MyListBox, den ich ja erst zur Laufzeit erzeuge?

(Also es geht nicht darum wie ich der ListBox einen enstp. Background einverleibe -- sondern wie ich an das Event OnDrawItem meiner MyListBox herankomme -- ganz so als ob ich im Objektinspektor einen Doppelklick ausführen würde.)

Lieben Dank & Gruß
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: In Nachfahren von TListBox das OndrawItem Ereignis auslö

  Alt 11. Apr 2010, 19:19
Einfach Eventhandler im Code Setzen:
MyListBox.onDrawItem := ...
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#3

Re: In Nachfahren von TListBox das OndrawItem Ereignis auslö

  Alt 11. Apr 2010, 20:25
Hallo.

Ähm, sorry aber das verstehe ich noch nicht ganz.
Wenn ich auf einer Form eine ListBox habe und dann im Objektinspektor für diese ListBox im Event OnDrawItem doppelklicke, dann wir ein Prozedur-Rumpf erzeugt wie dieser:

Delphi-Quellcode:
PROCEDURE TMain_frm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
BEGIN
  // mein Coding
END;
Dort habe ich mein Coding eingefügt.

Du sagst jetzt:

Zitat von mkinzler:
Einfach Eventhandler im Code Setzen:
MyListBox.onDrawItem := ...
Was soll denn dann genau an Stelle von ":= ..." kommen?
Doch nicht das Coding, was ich oben mit "// mein Coding" gekennzeichnet habe, oder?

Wo ist denn die mit dem Objektinspektor erzeugte Prozedur?


Vielen Dank
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: In Nachfahren von TListBox das OndrawItem Ereignis auslö

  Alt 11. Apr 2010, 20:54
Den Namen der Methode, welche beim Event aufgerufen werden soll

Die Methode musst du natürlich vorher anlegen

Delphi-Quellcode:
TMain_frm = class(TForm)
...
  procedure ListBoxDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
...
end;

PROCEDURE TMain_frm.ListBoxDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
BEGIN
...

procedure TMain_frm.FormCreate(Sender: TObject);
begin
    MyListBox := TNoVScrolllistbox.create(self);
    MyListBox.onDrawItem := ListBoxDrawItem;
...
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#5

Re: In Nachfahren von TListBox das OndrawItem Ereignis auslö

  Alt 11. Apr 2010, 21:03
Das hat ein wenig gedauert aber jetzt habe sogar ich es begriffen !

Super - vielen Dank!

Schönen Gruß
Jazzman
--- Delphi XE Starter, Windows 8 ---
  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:00 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