Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Bezug auf Objecte speichern?
Holg_i - Do 18.03.10 17:32
Titel: Bezug auf Objecte speichern?
OK das mit meiner Erklärung ist wohl nicht so einfach... deswegen habe ich nun es weiter unten noch mal versucht... also das hier mal vergessen.. ich lass es drin damit der Thread auch verfolgt werden kann :)
***********************
Jetzt wird es ernst.
Also ich habe in einem MDI ein Objekt zum Beispiel TEdit nun habe ich in meinem fsMDIForm eine Array
Delphi-Quelltext
1: 2:
| var MLabel array[0..20] of TEdit; |
Durch Drag&Drop kann man nun
Delphi-Quelltext
1:
| MLabel[X]:=TEdit(Target); |
zuweisen.
Soweit so gut so das nachher
Delphi-Quelltext
1:
| (MLabel[X] as TEdit).Text:=’Test’; |
etwas in das TEdit übertragen werden kann.
Klappt 100% bin auch total zufrieden.
Jetzt möchte ich die mühevollen Zuweisungen die der Benutzer durch Drag&Drop gemacht hat aber abspeichern.
Speicher Zuordnung.
Und da komme ich gerade null weiter. Nein ich suche keinen der mir den Code tippt *grins* aber eventuell ist ja jemand da der mir auf die Sprünge helfen kann.
---- Habe es noch mal geändert wegen TEdit und TLabel gemisch :)
Narses - Fr 19.03.10 11:42
Moin!
Gibt deinen TEdits beim Erstellen in .Tag eine eindeutige ID mit, die kannst du dir dann merken. :idea:
cu
Narses
Holg_i - Fr 19.03.10 13:54
Narses hat folgendes geschrieben : |
Moin!
Gibt deinen TEdits beim Erstellen in .Tag eine eindeutige ID mit, die kannst du dir dann merken. :idea:
cu
Narses |
Das ist glaube ich nicht möglich
Die TEdit werden auch erstellt durch das MDI
Also der Benutzer öffnet MDI-Fenster... eine Anzahl von x
nun weist er den Edit-Feldern in unterschiedlichen Fenster durch Drag&Drop zu
Die x Fenster speicher ich schon ab mit Position größe und Co und lade sie auch wieder
nur soll nun die Zuweisung mit abgespeichert werden.
Wie erkläre ich das nur mmmmmm ich hoffe man versteht mich
oder nicht?
Narses - Fr 19.03.10 15:15
Moin!
Holg_i hat folgendes geschrieben : |
Wie erkläre ich das nur mmmmmm ich hoffe man versteht mich
oder nicht? |
Ehrlich gesagt: nein. :nixweiss:
cu
Narses
Holg_i - Sa 20.03.10 17:28
OK Ich versuche es noch mal hoffendlich nun besser
Hier mal ein kleiner DelphiCode in Delphi 4 getippt.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Unit2, Unit3, Unit4;
type TZuweisung= record La: TLabel; Ed: TEdit; Me: TMemo; End;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Panel1: TPanel; Panel2: TPanel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure ButtonClick(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure EndDrag(Sender, Target: TObject; X, Y: Integer); procedure EditChange(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private Zuweisung: Array[1..3] of TZuweisung; public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ButtonClick(Sender: TObject); begin case (Sender as TButton).Tag of 1:TForm2.Create(self); 2:TForm3.Create(self); 3:TForm4.Create(self); end; end;
procedure TForm1.Button4Click(Sender: TObject); begin Close; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var I: Integer;
begin Timer1.Enabled:=False; For I:=1 to 3 do Begin Zuweisung[I].La:=Nil; Zuweisung[I].Me:=Nil; Zuweisung[I].Ed:=Nil; end;
while MDIChildCount > 0 do begin if TForm(MDIChildren[MDIChildCount - 1]).Owner = self then begin TForm(MDIChildren[MDIChildCount - 1]).Close; end; Application.ProcessMessages; end; end;
procedure TForm1.EndDrag(Sender, Target: TObject; X, Y: Integer);
var I: Integer;
begin I:=TEdit(Sender).Tag; IF (Target is TLabel) then begin Zuweisung[I].La:=TLabel(Target); end;
IF (Target is TMemo) then begin Zuweisung[I].Me:=TMemo(Target); end;
IF (Target is TEdit) then begin Zuweisung[I].Ed:=TEdit(Target); end; end;
procedure TForm1.EditChange(Sender: TObject);
var I: Integer;
begin I:=TEdit(Sender).Tag; IF Zuweisung[I].La<>Nil then (Zuweisung[I].La as TLabel).Caption:=TEdit(Sender).Text; IF Zuweisung[I].Me<>Nil then (Zuweisung[I].Me as TMemo).Lines.Add(TEdit(Sender).Text); IF Zuweisung[I].Ed<>Nil then (Zuweisung[I].Ed as TEdit).Text:=TEdit(Sender).Text; end;
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin For I:=1 to 3 do Begin Zuweisung[I].La:=Nil; Zuweisung[I].Me:=Nil; Zuweisung[I].Ed:=Nil; end; end;
procedure TForm1.Button5Click(Sender: TObject); begin IF Button5.Caption='Würfel an' then Begin Button5.Caption:='Würfel aus'; Timer1.Enabled:=True; end else Begin Button5.Caption:='Würfel an'; Timer1.Enabled:=False; end; end;
procedure TForm1.Timer1Timer(Sender: TObject);
var W: Integer;
begin W:=Random(6)+1; case Random(3)+1 of 1: Edit1.Text:=IntToStr(W); 2: Edit2.Text:=IntToStr(W); 3: Edit3.Text:=IntToStr(W); end; end;
end. |
Um was es hier geht.... nun ich möchte die hier gemachten zuweiseungen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.EndDrag(Sender, Target: TObject; X, Y: Integer);
var I: Integer;
begin I:=TEdit(Sender).Tag; IF (Target is TLabel) then begin Zuweisung[I].La:=TLabel(Target); end;
IF (Target is TMemo) then begin Zuweisung[I].Me:=TMemo(Target); end;
IF (Target is TEdit) then begin Zuweisung[I].Ed:=TEdit(Target); end; end; |
gerne abspeichern. da das ganze mit MDI Fenstern passiert ist die Sache für mich nicht so klar.
Anbei habe ich noch mal ein kleines Programm mitgegeben.... Einfach Fenster erstellen und die Editfelder rechts mit drag & drob hin ziehen wohin man die Würfelanzeige haben möchte...
Dann Würfel an un schon geht es los :)
Aber wie getippt es geht hier nur daraum das ich den Bezug den man hier durch Drag&Drob erstellt abspeichern möchte... Nein es ist nicht das Programm dieses hier zu Posten wäre einwenig viel es soll nur verdeutlichen was ich vor habe. Un es ist mir klar das hier bezüge noch nicht richtig aufgehoben werden.. Sucht nicht die Fehler im Programm helft mir lieber mein Problem zu lösen *grins*
Holg_i - Mo 22.03.10 19:57
Nun das abspeichern habe ich glaube ich geschafft. Die Lösung Poste ich wenn es fertig ist... aber dazu habe ich noch eine Frage.
Delphi-Quelltext
1:
| AForm:=TForm4.Create(self); |
Soweit so klar...
In dem erstellten Fenster ( AForm ) befindet sich z.B. eine TEdit mit der Procedure MyChange wie rufe ich die nun auf?
mit
Delphi-Quelltext
1:
| TEdit(AForm.FindComponent('MeinEdit')).MyChange(Self); |
klappt es ja nicht. Wo denke ich falsch?
ALF - Mo 22.03.10 20:12
Hi, evtl!?
Delphi-Quelltext
1:
| TEdit(AForm.FindComponent('MeinEdit')).onChange := MyChange; |
Bin mir aber nicht sicher, ob du das meinst?
Gruss ALf
Holg_i - Mo 22.03.10 20:12
Die Nachteile eines Forums bestehen darin das man immer viel zu schnell Fragen stellt *grins*
Als ich noch einzelkämpfer war und keinen Forum angehört habe hat es ja auch geklappt. Mann hat halt eventuel länger gebraucht :-)
Also die Antwort auf meine Frage ist
Delphi-Quelltext
1:
| TEdit(AForm.FindComponent('MeinEdit')).MyChange(Self); |
ist schon fast richtig. Auch wen ich die OnChange Procedure anderst benannt habe muss ich OnChange aufrufen.
Sorry für das dumme Fragen.
Aber für die eigendliche Frage habe ich ja noch keine Antwort. Bei mir läuft es zwar... Aber ob das der beste Weg ist ???
---
Moderiert von
Narses: Beiträge zusammengefasst---
ALF hat folgendes geschrieben : |
Hi, evtl!?
Delphi-Quelltext 1:
| TEdit(AForm.FindComponent('MeinEdit')).onChange := MyChange; |
Bin mir aber nicht sicher, ob du das meinst?
Gruss ALf |
danke dir da waren wir Zeitgleich....
wie getippt
Delphi-Quelltext
1:
| TEdit(AForm.FindComponent('MeinEdit')).onChange := MyChange; |
Immer die Proceduren der Komponente aufrufen ... nicht den Procedurnamen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!