Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Parameterübergabe Hauptprogramm an sein MDI (https://www.delphipraxis.net/53673-parameteruebergabe-hauptprogramm-sein-mdi.html)

jaikai 21. Sep 2005 09:25


Parameterübergabe Hauptprogramm an sein MDI
 
Hi Leute,

ich habe keine Ahnung wie das Ding in den Klammern im ProgrammierJargon richtig heißt, ich muß es deshalb hier "Parameter" nennen, is ja auch einer.

Bsp: Button4Click(Sender: TObject) (gemeint ist --> Sender: TObject)

Darauf beruht mein Problem:

Hauptanwednug mit zahlreichen MDI'S. Datenübergabe von MDI nach MDI erfolgt übers Hauptprogramm mit Parametern, die wieder ausgelesen und entsprechend bearbeitet werden.

Weil ich mehrere Memo's in den MDI's habe, möchte ich möglichst einfach über eine Parameterangabe die Dinger bearbeiten. Ich könnte nur über Strings arbeiten, hätte aber dann das Problem, sie immer wieder mit FindComponent finden zu lassen um irgendwas mit denen anzustellen.

Also kam ich auf die Idee, direkt das TMemo als Parameter zu übergeben.

Die obere Prozedur soll nur die 'Parameter-Kette' besser darstellen, als zu erklären wäre. Die untere wäre der passende Aufruf dazu.


Delphi-Quellcode:
procedure Memo_zu_Memo(Sender: TObject; Herkunft : string; HerkunftMemo : TMemo; Ziel: String; ZielMemo : TMemo; Sect : string);
begin

{   Hier wird über FindComponent das MDI Herkunft eingelesen ( Parameter Herkunft)
   dann sollte was im Memo_1 ausgelesen werden         ( Parameter HerkunftMemo)
        ...
   dann über FindComponent das MDI Ziel einlesen       ( Parameter Ziel)
   dann sollte was im Memo_2 geschrieben werden        ( Parameter ZielMemo)
}
end;




procedure TMainForm.Button4Click(Sender: TObject);
var Memo_1 : TMemo;
begin
  Memo_zu_Memo(Sender, 'MDI_1', Memo_1 , 'MDI_2', Memo_1, 'MachDas');
end;

Problem: Lasse ich die Variable (var Memo_1 : TMemo;) weg, findet er was zu meckern.
Geb ich sie im, dann findet er auf der anderen Seite nichts.

Wie mach ich das, daß das Hauptprogramm weiß, welches Memo des MDI's gemeint ist, bzw wie kann ich PArameter hierfür setzen, die auch funktionieren ?

Kann mir das bitte jemand beantworten...

Danke

xaromz 21. Sep 2005 09:42

Re: Parameterübergabe Hauptprogramm an sein MDI
 
Hallo,
Zitat:

Zitat von jaikai
Delphi-Quellcode:
procedure TMainForm.Button4Click(Sender: TObject);
var Memo_1 : TMemo;
begin
  Memo_zu_Memo(Sender, 'MDI_1', Memo_1 , 'MDI_2', Memo_1, 'MachDas');
end;

Du deklarierst in Deiner Methode ein Memo und übergibst dieses dann Deiner Prozedur. Das kann so nicht funktionieren.
Du musst natürlich deiner Prozedur die beiden tatsächlichen Memos übergeben, also das Quell-Memo und das Ziel-Memo.
Da Du ja wissen musst, welche beiden MDI-Fenster Du benutzt, kannst Du einfach deren Memos übergeben, dann sollte das auch klappen.
Übrigens brauchst Du bei Deiner Prozedur kein "Sender"-Objekt. Das ist nur bei Events von der VCL vorgegeben. In Deinem Fall steht da ja nur der Button drin, und der ist für dich unwichtig.

Gruß
xaromz

shmia 21. Sep 2005 10:02

Re: Parameterübergabe Hauptprogramm an sein MDI
 
1.) die MDI-Formulare präsentieren ihre Daten über Properties nach aussen:
Delphi-Quellcode:
TMDIform = Class(TForm)
   public
      property Bemerkungen:TStrings read GetBemerkungen write SetBemerkungen;
end;
function TMDIform.GetBemerkungen : TStrings;
begin
   result := Memo4.Lines;
end;
procedure TMDIform.SetBemerkungen(value : TString);
begin
   Memo4.lines := value;
end;
2.) Der direkte Zugriff auf Controls der MDI Formulare ist verboten !!!(obwohl es leicht möglich wäre)
3.) so wird dann kopiert:
Delphi-Quellcode:
var
   source, dest : TMDIform;
begin
   source := ....;
   dest  := ActiveMDIChild as TMDIform;

   if source=dest then
      exit;
   dest.Bemerkungen := source.Bemerkungen;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz