AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi TLabeledEdit.EditLabel als PopupComponent
Thema durchsuchen
Ansicht
Themen-Optionen

TLabeledEdit.EditLabel als PopupComponent

Ein Thema von ImpeDan · begonnen am 23. Feb 2014 · letzter Beitrag vom 23. Feb 2014
Antwort Antwort
ImpeDan
(Gast)

n/a Beiträge
 
#1

TLabeledEdit.EditLabel als PopupComponent

  Alt 23. Feb 2014, 12:06
Hallo zusammen,

ich habe auf meinem Formular einen Button, der im OnClick Event ein neues TLabeledEdit erstellt und unter anderem dem entsprechendem EditLabel ein PopupMenu zuordnet. Nun will ich über dieses PopupMenu die Caption des TLabeledEdit.EditLabel ändern. Die einzelnen MenuItems rufen dabei alle die selbe Prozedur auf. Ich hab jetzt schon ne Weile gesucht und einige Varianten an Code ausprobiert, allerdings ohne Erfolg. Im Prinzip suche ich so etwas in der Art:
(PopupMenu1.PopupComponent as TLabeledEdit.EditLabel).Caption := (Sender as TMenuItem).Caption + ':';

Die Variante (PopupMenu1.PopupComponent as TLabeledEdit).EditLabel.Caption := (Sender as TMenuItem).Caption + ':'; funktioniert auch nicht.

Vielen Dank schon im voraus...
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: TLabeledEdit.EditLabel als PopupComponent

  Alt 23. Feb 2014, 12:12
Versuchs mal so:
  TLabeledEdit(TPopupMenu(TMenuItem(Sender).GetParentComponent).PopupComponent).EditLabel.Caption := 'Test';
  Mit Zitat antworten Zitat
ImpeDan
(Gast)

n/a Beiträge
 
#3

AW: TLabeledEdit.EditLabel als PopupComponent

  Alt 23. Feb 2014, 12:22
...Das funktioniert leider auch nicht. Ich denke das Problem besteht darin, dass die PopupMenu.PopupComponent eben nicht ein TLabeledEdit sondern nur "ein Teil davon" ist, nämlich das entsprechende EditLabel...
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: TLabeledEdit.EditLabel als PopupComponent

  Alt 23. Feb 2014, 12:26
Ich habs bei mir ausprobiert und es funktioniert. Was genau funktioniert nicht? Wird nur nichts zugewiesen, schmiert das Programm ab oder wie äußert sich das "es funktioniert nicht"?

Führ die Schritte nochmals einzeln aus und benutz mal den Debugger und kuck, was nicht funktioniert.

Tipp: Dazu brauchst du einige lokale Variablen, denen du die zurückgelieferten Komponenten zuweisen kannst.
  Mit Zitat antworten Zitat
ImpeDan
(Gast)

n/a Beiträge
 
#5

AW: TLabeledEdit.EditLabel als PopupComponent

  Alt 23. Feb 2014, 12:46
ich hab das jetzt so getestet:
Delphi-Quellcode:
procedure TForm1.PopupMenu1ItemSelected(Sender: TObject);
var
  MyLabeledEdit: TLabeledEdit;
  MyMenuItem: TMenuItem;
  MyPopupMenu: TPopupMenu;
begin
  MyMenuItem := TMenuItem(Sender);
  MyPopupMenu := TPopupMenu(MyMenuItem.GetParentComponent);
  MyLabeledEdit := TLabeledEdit(MyPopupMenu.PopupComponent);
  MyLabeledEdit.EditLabel.Caption := 'test';
end;
Das Kompilieren funktioniert auch schon wie in vorherigen Versuchen, der Fehler wird jetzt für "control.inc" in Zeile 3246 angezeigt: GetTextMethod := TMethod(@Self.GetTextBuf); und tritt beim erreichen der Zeile MyLabeledEdit.EditLabel.Caption := 'test'; auf.

(edit)
Wenn ich der Variable manuell eine bestehende Komponente zuweise, gibt es komischerweise keinen Fehler:
Delphi-Quellcode:
MyLabeledEdit := LblEdt01;
  MyLabeledEdit.EditLabel.Caption := 'test';

Geändert von ImpeDan (23. Feb 2014 um 12:50 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: TLabeledEdit.EditLabel als PopupComponent

  Alt 23. Feb 2014, 13:34
Lad doch mal bitte das Projekt hoch. Dann kann man es besser nachvollziehen.

Btw. hinterleg doch mal pls. deine Delphi Version in deinem Profil.
  Mit Zitat antworten Zitat
ImpeDan
(Gast)

n/a Beiträge
 
#7

AW: TLabeledEdit.EditLabel als PopupComponent

  Alt 23. Feb 2014, 13:45
Hier einmal den Source-Code sowie das Formular... Ist an sich Bestandteil eines deutlich größeren Projekts, wobei die Verknüpfungen zu den anderen Units eh noch nicht bestehen, da es sich gerade bei diesem Unit noch um eine sehr einfache Version handelt, die ich ersteinmal für sich genommen zum laufen kriegen möchte...
Angehängte Dateien
Dateityp: 7z Project.7z (1,8 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: TLabeledEdit.EditLabel als PopupComponent

  Alt 23. Feb 2014, 14:11
Du hättest erwähnen sollen, dass es sich hierbei um ein Lazarus Projekt handelt. So wie ich das sehe (und gelesen habe), wird die Eigenschaft PopupComponent bei Lazarus nicht bzw. falsch gesetzt. Dann ist es nicht verwunderlich, dass eine Exception ausgelöst wird.

Du könntest das mit einem Workaround lösen, indem du dir beim OnMouseDown selbst die entsprechende Komponente merkst und dann darauf zugreifst. Das sollte dann funktionieren.
  Mit Zitat antworten Zitat
ImpeDan
(Gast)

n/a Beiträge
 
#9

AW: TLabeledEdit.EditLabel als PopupComponent

  Alt 23. Feb 2014, 14:43
Okay, gut zu wissen. Ich teste das in den nächsten Tagen dann mal, hab jetzt gerade keine Zeit mehr...
Vielen Dank für die Hilfe :)
  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 02:24 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