Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Parameterrückgabe von Form an aufrufenden Prozess (https://www.delphipraxis.net/199995-parameterrueckgabe-von-form-aufrufenden-prozess.html)

TurboMagic 9. Mär 2019 17:35

AW: Parameterrückgabe von Form an aufrufenden Prozess
 
Zitat:

Zitat von hoika (Beitrag 1427367)
Hallo,
Zitat:

Ein anderer wäre dem Suchen Fenster via Konstruktor eine Callback-Methode zu übergeben, die das Suchen
Fenster aufruft wenn es geschlossen wird und dem die Daten übergibt.
Bo eh!
Der TE hat 43 Einträge !

;)

Hm? Wer oder was ist TE?
Hab' ich etwa was falsch gemacht?

TurboMagic 10. Mär 2019 09:55

AW: Parameterrückgabe von Form an aufrufenden Prozess
 
Wenn ein Callback genutzt werden soll geht es ungefähr so:

Delphi-Quellcode:
type
  TCallbackProc = procedure(MyReturnValue:Integer) of Object;

  TMyForm = class(TForm)
  private
    FCallback : TCallbackProc;
  public
    constructor Create(AOwner: TComponent; ResultCallback:TCallbackProc);
  end;

constructor TMyForm.Create(AOwner: TComponent; ResultCallback:TCallbackProc);
begin
  inherited Create(AOwner);

  FCallback := ResultCallback;
end;

Im FormClose dann einfach das aufrufen, wenn 5 zurückgegeben werden soll,
evtl. mittels Assigned Prüfung absichern:
  FCallback(5);
   

Aufruferseite:

TMyOtherForm = class(TForm)
private
  procedure DoIt;
public
  procedure GetResult(MyReturnValue:Integer);
end;

procedure TMyOtherForm.DoIt;
var
  MyForm : TMyForm;
begin
  MyForm := TMyForm.Create(self, Getresult);
  MyForm.Show; // oder .ShowModal, bei .Show muss sich die andere Form
               // selber freigeben, bei ShowModal müsste es hier passieren
end;

procedure TMyOtherForm.GetResult(MyReturnValue:Integer);
begin
  ShowMessage(MyReturnValue.ToString);
end;
So ungefähr geht das und das ist in etwa auch, was der Formulareditor tut,
wenn man einem Steuerelement ein Event zuweist.

hoika 10. Mär 2019 10:48

AW: Parameterrückgabe von Form an aufrufenden Prozess
 
Hallo,
TE= Thread-Ersteller

FediDelPr 14. Mär 2019 20:35

AW: Parameterrückgabe von Form an aufrufenden Prozess
 
@haentschman

Ich sehe die Vorteile von dynamischen Objekten mindestens teilweise schon.
Manchmal ist es ein Muss.

Trotzdem wende ich dies sehr sparsam an und zwar aus dem Grund der Zuverlässigkeit.
Ich denke, dass viele Fehler heutiger Software bei der Anwendung dynamischer
Strukturen liegen. Ein typisches Beispiel ist die Delphi-IDE selbst. Immer wieder mal
gibt's Probleme mit der dyn. Speicherverwaltung.

Der Zeitdruck in der Software-Entwicklung ist heute sehr hoch. Oft zu hoch.
Schnell vergisst man mal eine Speicherfreigabe oder die Übersicht ist nicht mehr
wirklich da.
Im weiteren ist auch die dahinterliegende Implementation komplexer und damit fehleranfälliger.
Also wieder mal: je einfacher, desto besser.

Wenn mir jemand ein tolles Rezept hat das in den Griff zu bekommen, bin ich ganz Ohr.
Ich denke da ist der PASCAL-Nachfolger OBERON schon besser. Aber eben..

ps
Neben der dynamischen Objekt-/Speicherverwaltung gibt's noch Thema wo ich sehr vorsichtig
bin: Interrupts - wirklich nur dort wo's absolut notwendig (Timing). In den meisten
Echtzeit-Systemen sind nur ganz wenige notwendig.

FediDelPr 14. Mär 2019 20:38

AW: Parameterrückgabe von Form an aufrufenden Prozess
 
@Andreas L., Pfaffe und TurboMagic

ich werde mich später weiter damit befassen. Diese alternativen Methoden interessieren
mich.

TurboMagic 16. Mär 2019 14:52

AW: Parameterrückgabe von Form an aufrufenden Prozess
 
Zitat:

Zitat von FediDelPr (Beitrag 1427763)
@haentschman

Ich sehe die Vorteile von dynamischen Objekten mindestens teilweise schon.
Manchmal ist es ein Muss.

Trotzdem wende ich dies sehr sparsam an und zwar aus dem Grund der Zuverlässigkeit.
Ich denke, dass viele Fehler heutiger Software bei der Anwendung dynamischer
Strukturen liegen. Ein typisches Beispiel ist die Delphi-IDE selbst. Immer wieder mal
gibt's Probleme mit der dyn. Speicherverwaltung.

Der Zeitdruck in der Software-Entwicklung ist heute sehr hoch. Oft zu hoch.
Schnell vergisst man mal eine Speicherfreigabe oder die Übersicht ist nicht mehr
wirklich da.

Naja, im Lieferumfang von Delphi ist schon ein einfacher Hinweisgeber für vergessene
Speicherfreigaben eingebaut. Man muss ihn nur wie folgt aktivieren:

1. .dpr Datei des Projekts öffnen
2. als erste Zeile direkt hinter das begin das hier schreiben:
ReportMemoryLeaksOnShutdown := true;

Wenn nun das Programm ein Speicherleck verursacht, gibt's beim beenden eine Meldung.
Nur sagt einem diese Variante noch nicht woher es kommt.

Lädt man die komplettversion des FastMM4 Speichermanagers aus dem internet herunter,
kann man auch einen Stacktrace bekommen der auf die Programmstelle zeigt, an der dieser
Speicher allokiert wurde.

Damit wird es zumindest unter Windows sehr einfach Speicherlecks zu finden.

Grüße
TurboMagic

DieDolly 16. Mär 2019 14:54

AW: Parameterrückgabe von Form an aufrufenden Prozess
 
Zitat:

1. .dpr Datei des Projekts öffnen
2. als erste Zeile direkt hinter das begin das hier schreiben:
ReportMemoryLeaksOnShutdown := true;
Als ich die Funktion vor über einem Jahr entdeckt und auch eingeschaltet habe, war ich erstmal mehrere Wochen damit beschäftigt Speicherlecks zu beseitigen.

Die Funktion ist goldwert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:42 Uhr.
Seite 2 von 2     12   

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