Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Code für mehrere Komponenten verwenden (https://www.delphipraxis.net/169680-code-fuer-mehrere-komponenten-verwenden.html)

Pentium 80486 4. Aug 2012 15:12

Code für mehrere Komponenten verwenden
 
Hallo,

entweder stelle ich mich gerade ein wenig blöd an, oder ich weiß wirklich keine Lösung.

Es geht darum, dass ich einen größeren Code gerne nur ein Mal vorhanden haben, aber mehrfach, für verschiedene Komponenten, verwenden möchte.

Dieser beginnt mit
Delphi-Quellcode:
 with TListBox(Control).Canvas do
Wie genau muss ich dieser Zeile umschreiben, dass ich meinen Code für eine TListBox und eine TComboBox verwenden kann?

mkinzler 4. Aug 2012 15:16

AW: Code für mehrere Komponenten verwenden
 
Z.B. auf einen gemeinnsamen Vorfahren Casten. Am Besten auf einen der möglich hoch im Vererbungsschema ist und die gemeinsame eigenschaft besitzt. In diesem Fall TWinControl

Pentium 80486 4. Aug 2012 15:25

AW: Code für mehrere Komponenten verwenden
 
TWinControl kennt aber kein Canvas mehr, oder irre ich mich?

Bummi 4. Aug 2012 15:39

AW: Code für mehrere Komponenten verwenden
 
Du kannst Dich in WM_Paint hängen und Dein eigenes Canvas erzeugen, ansonsten per GetDC das Handle holen, in Deinem Canvas verwenden und wieder freigeben .
Delphi-Quellcode:
Canvas := TCanvas.Create;
try
Canvas.Handle := Message.DC;
finally
Canvas.Free;
end;

Jumpy 6. Aug 2012 08:17

AW: Code für mehrere Komponenten verwenden
 
Könnt man nicht auch alles in eine Prozedur auslagern, der man ein Canvas als Parameter übergibt (und der es egal ist, wo das Canvas herkommt) und die dann schaut, ob das Canvas was kann :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 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