[gelöst] onClick setzen in onPaint

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
atroesch
Beiträge: 52
Registriert: Mo 7. Jul 2025, 10:05

[gelöst] onClick setzen in onPaint

Beitrag von atroesch »

Code: Alles auswählen

form.create...
begin
MEntry:=Tstatictext.Create(nil);
Mentry.OnClick:=@MenuEntryClick;
MEntry.Parent:=SideMenu_Panel;        

Code: Alles auswählen

form.FormPaint.....
begin
MEntry:=Tstatictext.Create(nil);
Mentry.OnClick:=@MenuEntryClick;
MEntry.Parent:=SideMenu_Panel;       
der erste code funktioniert.
onClick macht was es soll.

der zweite code funktioniert nicht.
onClick wird nicht ausgeführt (visuell ist ein click vorhanden)

problem nur unter linux, unter windows funktioniert es.
Zuletzt geändert von atroesch am Mi 3. Sep 2025, 17:15, insgesamt 1-mal geändert.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1685
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: onClick setzen in onPaint

Beitrag von fliegermichl »

Wofür soll das denn gut sein?

Wenn man dem OnClick Eventhandler eine Methode zuweist, dann bedeutet das doch nur, daß beim anklicken des Menüitems die entsprechende Methode aufgerufen werden soll.
Das ist einem Painthandler zu tun macht keinen Sinn.

Benutzeravatar
theo
Beiträge: 11007
Registriert: Mo 11. Sep 2006, 19:01

Re: onClick setzen in onPaint

Beitrag von theo »

Du createst also in OnPaint ein Control (TStaticText)?
Das ist eine ganz schlechte Idee.
Warum?

atroesch
Beiträge: 52
Registriert: Mo 7. Jul 2025, 10:05

Re: onClick setzen in onPaint

Beitrag von atroesch »

ok, warum ist das eine schlechte idee?
wenn die form neu gezeichnet wird will ich
menupunkte setzen die eventuell dazu gekommen sind.
wo würde ich das normalerweise tun?

wofür wird die onpaint methode denn normalerweise genutzt?

und wenn das quatsch ist wieso funktioniert es unter windows
einwandfrei und unter linux nicht?

Benutzeravatar
theo
Beiträge: 11007
Registriert: Mo 11. Sep 2006, 19:01

Re: onClick setzen in onPaint

Beitrag von theo »

atroesch hat geschrieben: Mi 3. Sep 2025, 16:28 wofür wird die onpaint methode denn normalerweise genutzt?
Nur zum Zeichnen, nicht um Controls zu createn.
So wie in deinem Code oben createst du immer ein neues TStaticText wenn zufällig neu gezeichnet wird?
Das kann nicht richtig sein. Dann auch noch mit Ownder NIL, dann werden die gar nicht mehr freigegeben?

atroesch
Beiträge: 52
Registriert: Mo 7. Jul 2025, 10:05

Re: onClick setzen in onPaint

Beitrag von atroesch »

Code: Alles auswählen

MEntry.Parent:=SideMenu_Panel;
Der Code den ich gepostet habe ist nicht vollständig.
Ich lösche die alten einträge bevor ich die neuen setze.

Das das in onPaint nicht richtig ist scheint ja ok.
Also welche methode nutze ich den für sowas?

Benutzeravatar
theo
Beiträge: 11007
Registriert: Mo 11. Sep 2006, 19:01

Re: onClick setzen in onPaint

Beitrag von theo »

atroesch hat geschrieben: Mi 3. Sep 2025, 16:59 Das das in onPaint nicht richtig ist scheint ja ok.
Also welche methode nutze ich den für sowas?
Ich kenne deinen Code nicht. Halt in dem Moment, wo es notwendig ist.
Das Neuzeichnen musst du ja auch veranlassen.

atroesch
Beiträge: 52
Registriert: Mo 7. Jul 2025, 10:05

Re: onClick setzen in onPaint

Beitrag von atroesch »

ok das hilft.

danke.

Antworten