Autor Beitrag
colaka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 4

Win XP, W7
Delphi 2005 Prof.
BeitragVerfasst: Sa 13.10.12 12:35 
Hallo,

ich habe viele Editfelder und möchte, dass man den Inhalt eines jeden Feldes in jedes andere einfügen kann. Dazu habe ich ein PopUpMenue und eine ActionList erstellt. In der ActionList gibt es die Aktion ANameKopieren und ANameEinfuegen. Doch der folgende Code erzeugt eine Zugriffsverletzung:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TFKunden.ANameKopierenExecute(Sender: TObject);
begin
  TempText := TEdit(Sender).Text;
end;

procedure TFKunden.ANameEinfuegenExecute(Sender: TObject);
begin
  TEdit(Sender).Text := TempText;
end;


Was mache ich da wohl falsch?

_________________
Mit 2 Stunden Ausprobieren kann man sich oft 5 Minuten Nachdenken ersparen
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Sa 13.10.12 12:59 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  mi: TMenuItem;
begin
  if TAction(Sender).ActionComponent is TMenuItem then
  begin
      mi := TMenuItem(TAction(Sender).ActionComponent);
      if mi.GetParentMenu is TPopupMenu then
      begin
        if TPopupMenu(mi.GetParentMenu).PopupComponent is TEdit then
          TempText := TEdit(TPopupMenu(mi.GetParentMenu).PopupComponent).Text;

    end;
  end;
  Showmessage(TempText);

end;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS

Für diesen Beitrag haben gedankt: colaka
colaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 4

Win XP, W7
Delphi 2005 Prof.
BeitragVerfasst: Sa 13.10.12 14:11 
Vielen Dank für die schnelle Antwort. Leider ist der Code etwas zu hoch für mich, deshalb habe ich ihn einfach abkopiert. Jetzt kommt zwar keine Fehlermeldung mehr, aber den Text des Editfeldes erhalte ich auch nicht. Die Messagebox zeigt nichts an. Um dem Fehler näher zukommen, habe ich den Code noch etwas abgewandelt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TFKunden.ANameKopierenExecute(Sender: TObject);
var
  mi: TMenuItem;
begin
  if TAction(Sender).ActionComponent is TMenuItem then
  begin
    mi := TMenuItem(TAction(Sender).ActionComponent);
    if mi.GetParentMenu is TPopupMenu then
    begin
      if TPopupMenu(mi.GetParentMenu).PopupComponent is TEdit then
      begin
        ShowMessage('Text');
        TempText := TEdit(TPopupMenu(mi.GetParentMenu).PopupComponent).Text;
      end else
        ShowMessage('kein Text');
    end;
  end;
  Showmessage(TempText);
end;


Es ist egal, ob ich den Text im Editfeld markiere oder nicht, es erscheint immer die Message "kein Text".

_________________
Mit 2 Stunden Ausprobieren kann man sich oft 5 Minuten Nachdenken ersparen
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Sa 13.10.12 16:44 
Ich gehe von einem Popupmenu aus dem Actions zugewiesen worden, den Edits wurden das Popupmenu zugewiesen.
Ansonsten einen Brechpunkt setzen und durchsteppen, da wo es nicht mehr passt den Klassennamen anzeigen lassen.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
colaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 4

Win XP, W7
Delphi 2005 Prof.
BeitragVerfasst: Sa 13.10.12 17:54 
Ja,

ich hatte das PopUpMenue dem ganzen Panel zugewiesen. Jetzt habe ich es den einzelnen Editfeldern zugewiesen, und es funktioniert wunderbar.

Vielen Dank

_________________
Mit 2 Stunden Ausprobieren kann man sich oft 5 Minuten Nachdenken ersparen
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: So 14.10.12 01:02 
Zitat:

Leider ist der Code etwas zu hoch für mich


Liest sich doch eigentlich recht einfach, die Frage ist ja nur "wer kennt wen"

Die Action weiß wer sie aufgerufen hat
Wenn es ein Menuitem eines Popupmenues war weiß dass Popupmenu wer es aufgerufen hat ....

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS