![]() |
Eigene Komponente mit Buttons
Hallo,
ich habe schon wieder eine Frage. Und zwar bin ich doch dabei, eine Komponente zu schreiben. Soweit auch schon ganz erfolgreich. Jetzt benötige ich Navigationsschaltflächen (vor und zurück), die ich per Draw aus einer Resource lade. Klappt auch. Doch wie kann ich jetzt registrieren, dass ein Benutzer auf dieses Bild klickt? Ich vermute mal, dass ich dazu noch nicht einmal Draw benutzen darf, sondern eine Button-Komponente einbauen muss, oder? Danke! |
Re: Eigene Komponente mit Buttons
von welcher Komponente hast du abgeleitet und wie stellst du die Bilder dar?
|
Re: Eigene Komponente mit Buttons
Ich würde auf jedenfall eine Unterkomponente verwenden
|
Re: Eigene Komponente mit Buttons
Zitat:
Wenn ich nichts verpasst habe, dann kann man mit der der Funktion Draw nur zeichnen, nicht laden. Die Frage ist hier eher, von was für einer Komponente ist Deine abgeleitet? Wenn Du auf sie zeichnen kannst, dann gibt es bestimmt auch die Ereignisse OnMouseDown und OnMouseUp, über diese bekommst Du die Position einer Mausaktion. Da Du das Bild zeichnest, musst Du nur schauen wo der Maus-click statt findet und was ander der Stelle steht (vor oder zurück), fertig. Gruß Der Unwissende |
Re: Eigene Komponente mit Buttons
Hallo,
meine Komponente ist von TCustomcontrol abgeleitet. Dass man mir Draw nur zeichnen kann, ist ja schon irgendwie klar. Ich weiß nur nicht, welche Unterkomponente ich verwenden soll, damit man bei dem Button keinen Rand mehr sieht. Dieser Button soll nämlich fest ins Design eingebaut werden und nicht "rausstehen". |
Re: Eigene Komponente mit Buttons
dann überschreibe einfach die Methoden MouseDown und MouseUp
|
Re: Eigene Komponente mit Buttons
Hm naja,
der Button steht ja von Haus aus ein bisschen raus. Dieser pseudo-3D-Effekt soll hier aber (in meinem Fall) vermieden werden. Oder gibt's dafür eine Eigenschaft? |
Re: Eigene Komponente mit Buttons
Zitat:
|
Re: Eigene Komponente mit Buttons
Das verstehe ich jetzt nicht... Sorry :oops:
|
Re: Eigene Komponente mit Buttons
Zitat:
Dieses Event erzwingen kannst du dann so, soweit du intern über das OnMouseDown Event festgestellt hast, dass das Bild angeklickt wurde:
Delphi-Quellcode:
type
TOnPictureClick = procedure (Sender : TObject) of object ; // Weitere Parameter sind auch möglich. TNotifyEvent entspricht dieser Deklaration TMyComponent = class (TUserControl) private procedure AnyProcedure ; published property OnPictureClick : TOnPictureClick read FOnPictureClick write FOnPictureClick ; end ; Das Event OnPictureClick auslösen kannst du in deinem Komponentencode überall etwa so:
Delphi-Quellcode:
procedure TMyComponent.AnyProcedure ;
begin if Assigned (OnPictureClick) then OnPictureClick (Self) ; end ; |
Re: Eigene Komponente mit Buttons
Stimmt.
Ich glaube, dass ich das so mache. Dankeschön! |
Re: Eigene Komponente mit Buttons
Zitat:
|
Re: Eigene Komponente mit Buttons
Ok, die Delphi-Hilfe ist zwar verfügbar, aber unter Vista (noch) nicht aufrufbar. Ich habe jetzt im Constructor 2 Images erstellt und diese dann einem Ereignis zugeordnet.
Danke! |
Re: Eigene Komponente mit Buttons
Zitat:
|
Re: Eigene Komponente mit Buttons
Naja,
müsste schon in einer Komponente sein. Habe es jetzt auch geschafft, wie ich oben beschrieben habe. Die Komponente sollte schon sein. Nur meine Button-Images werden immer im onpaint überschrieben. Wei net, was ich machen soll. Dauernd neu erstellen und neu zeichnen ist auch mist - außerdem flackert's *g* |
Re: Eigene Komponente mit Buttons
Das Flackern ist das geringste Problem. Wie gesagt : schicke Screenshot, was das Ganze soll. Ich sehekeinen Grund, daraus eine Komponente zu machen. Das wird IMHO unnötig zu kompliziert. Grund : Sub-Sub-Komponenten usw. Da wirst Du den Überblick wohl langsam aber sicher verlieren !
|
Re: Eigene Komponente mit Buttons
und wenn dich das flackern stört zeichne einfach selbst auf die Canvas.
|
Re: Eigene Komponente mit Buttons
Zitat:
Delphi-Quellcode:
property Ctl3D;
|
Re: Eigene Komponente mit Buttons
Hmmm. Wieso nimmst Du nicht einfach das Frame-Konzept. Da hast Du dann so etwas wie eine Komponente. Nur viel viel einfacher.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:53 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 by Thomas Breitkreuz