AGB  ·  Datenschutz  ·  Impressum  







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

PopUpMenu: Den Sender ermitteln

Ein Thema von BetaBot · begonnen am 6. Mai 2009 · letzter Beitrag vom 7. Mai 2009
Antwort Antwort
BetaBot

Registriert seit: 6. Mai 2007
35 Beiträge
 
Turbo Delphi für Win32
 
#1

PopUpMenu: Den Sender ermitteln

  Alt 6. Mai 2009, 23:08
Guten Abend Delphi - Gemeinde,

falls mein Problem so simpel zu lösen ist, vorweg: Ich habe wirklich nach einer Lösung gesucht, komme aber gerade nicht weiter. Hier das Problem: Ich habe eine ListBox und ein Memo zum selben PopUpMenu verlinkt. Dieses Menu hat zwei Items 'größer' und 'kleiner' und je nach Wahl, sollen diese die Schrift vergrößern oder verkleinern. Im OnClickEreignis für das Item 'größer' steht folgendes:
If Sender is TMemo then (Sender as TMemo).Font.Size := (Sender as TMemo).Font.Size + 2; Der Code wird anstandslos compiliert, aber zur Laufzeit passiert bei OnClick in der Memokomponente nichts. Meine Vermutung: Das Memo ist im OnClickEreignis des PopUpItems gar nicht mehr der Sender.
Ich hoffe, ihr könnt mir helfen und mir möglichst einen Weg weisen, um dieses PopUpMenu auch für andere Komponenten nutzbar zu machen.

Danke bis hierher,

BetaBot
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#2

Re: PopUpMenu: Den Sender ermitteln

  Alt 6. Mai 2009, 23:22
Tipp: In den Klick-Ereignissen der Popupmenüs ist der Sender ein TMenuList Objekt -> das kannst du wie folgt ermitteln:

  ShowMessage( TObject(Sender).ClassName ); deshalb wird Sender is TMemo/TListBox/.. nie wahr sein!

MfG
  Mit Zitat antworten Zitat
BetaBot

Registriert seit: 6. Mai 2007
35 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: PopUpMenu: Den Sender ermitteln

  Alt 6. Mai 2009, 23:35
hallo mr_emre_d,

auf
ShowMessage( TObject(Sender).ClassName ); in der OnClickRoutine zeigt er die Message 'TMenuItem', also bin ich wohl einen falschen Weg gegangen. Aber wie kann ich denn nun rausfinden, von wo das PopUpMenu aufgerufen wurde?
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: PopUpMenu: Den Sender ermitteln

  Alt 6. Mai 2009, 23:41
Hallo,

schau mal in diesen Thread hinein.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

Re: PopUpMenu: Den Sender ermitteln

  Alt 6. Mai 2009, 23:43
Nicht getestet und evtl auch nicht 100% sicher:

Im Prinzip müsste nach dem Menü-Klick das ActiveControl des Formulars auf das richtige Memo zeigen. Problem könnte sein, wenn es vorher nicht fokusiert war.


€: Vorschlag davor war besser
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#6

Re: PopUpMenu: Den Sender ermitteln

  Alt 6. Mai 2009, 23:49
Hallo, definiere den Sender im OnMouseDown - Ereignis.
hierzu kannst Du Dir eine Variable Definieren
z.B.
Delphi-Quellcode:
 
private
PupUpCallObject := TObject;
.
.
.
end;
im OnMouseDown-Ereignis schreibst Du
PopUpCallObject := Sender; somit wird dein Sender schon vor dem Klick-Ereignis festgelegt
und die Auswertung dürfte kein Problem mehr sein.
Markus H.
  Mit Zitat antworten Zitat
BetaBot

Registriert seit: 6. Mai 2007
35 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: PopUpMenu: Den Sender ermitteln

  Alt 6. Mai 2009, 23:54
Habe es gerade auch rausgefunden:
Delphi-Quellcode:
procedure TMainForm.grer1Click(Sender: TObject);
begin
  If PopUpMenu1.PopupComponent is TMemo then (PopupMenu1.PopupComponent as TMemo).Font.Size := (PopupMenu1.PopupComponent as TMemo).Font.Size+1
  else If PopUpMenu1.PopupComponent is TListBox then (PopupMenu1.PopupComponent as TListBox).Font.Size := (PopupMenu1.PopupComponent as TListBox).Font.Size + 1;
end;
Das funktioniert nun.
Vielen Dank an euch, die ihr um diese Zeit noch anderen helft.

Gute Nacht,

der BetaBot.
  Mit Zitat antworten Zitat
7. Mai 2009, 00:04
Dieses Thema wurde von "fkerber" von "Neuen Beitrag zur Code-Library hinzufügen" nach "VCL / WinForms / Controls" verschoben.
Kein Vorschlag zur Code-Lib, sondern eine Frage.
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 09:01 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