AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Meldungen aus einer Unit an ein Formular senden
Thema durchsuchen
Ansicht
Themen-Optionen

Meldungen aus einer Unit an ein Formular senden

Ein Thema von LarsSchwencke · begonnen am 3. Jan 2014 · letzter Beitrag vom 19. Apr 2015
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#21

AW: Meldungen aus einer Unit an ein Formular senden

  Alt 19. Apr 2015, 10:22
Das mit dem Dangling Pointer bedeutet, dass wir bei dieser Vorgehensweise ja 2 Verweise auf dieselbe Instanz haben. Wird das Formular, das diese anlegt, zerstört, gibt es sie wieder frei, somit zeigt der Verweis in der sendensen Klasse dann ins Leere.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Sigi55

Registriert seit: 3. Jan 2010
36 Beiträge
 
Delphi 5 Professional
 
#22

AW: Meldungen aus einer Unit an ein Formular senden

  Alt 19. Apr 2015, 10:43
Moin nochmal ...

Das mit dem Dangling Pointer bedeutet, dass wir bei dieser Vorgehensweise ja 2 Verweise auf dieselbe Instanz haben. Wird das Formular, das diese anlegt, zerstört, gibt es sie wieder frei, somit zeigt der Verweis in der sendensen Klasse dann ins Leere.
Ok, verstanden, aber ich wollt eh nix kaputt machen

Und mit der Progressbar ?
Ich hab mir überlegt, ich könnte das ja so machen wie bei z.B. einer Stringliste mit "name" and "value" ('Hans=12'), also quasi als Parameter übergeben und dann in der Hauptform ausgeben oder auch ignorieren, oder ist das blö.. ?

Gruß

Sigi
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#23

AW: Meldungen aus einer Unit an ein Formular senden

  Alt 19. Apr 2015, 11:09
Eigentlich bringt doch diese MessageManager-Klasse keinen Vorteil gegenüber dem einfachen Zuweisen eines Callbacks/einer Event-Methode. Gut es fügt noch ein wenig mehr Code hinzu - macht es also aufwendiger/komplizierter ohne einen wirklichen Mehrwert zu schaffen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Sigi55

Registriert seit: 3. Jan 2010
36 Beiträge
 
Delphi 5 Professional
 
#24

AW: Meldungen aus einer Unit an ein Formular senden

  Alt 19. Apr 2015, 11:50
Moin Sir,

Eigentlich bringt doch diese MessageManager-Klasse keinen Vorteil gegenüber dem einfachen Zuweisen eines Callbacks/einer Event-Methode. Gut es fügt noch ein wenig mehr Code hinzu - macht es also aufwendiger/komplizierter ohne einen wirklichen Mehrwert zu schaffen.
.. also, für mich (NICHT OOPler, Anfang 80er=BASIC, 90er=CLIPPER(dBase), 20Jahre Pause, seit 2 Jahren DELPHI (TopDown Progging [prozedural], so mal als Background ) ist das einfach und verständlich, oder geht's noch einfacher ?

Mir ist wichtig, die festverdrahteten unit2unit Verbindungen aufzulösen ..

Gruß

Sigi
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#25

AW: Meldungen aus einer Unit an ein Formular senden

  Alt 19. Apr 2015, 12:03
Nehmen wir mal das Beispiel von oben und designen das mal ohne den MessageManager:
Delphi-Quellcode:
type
  TfrmMitMemo = class(TForm)
    mmoMessages: TMemo;
    btnShowInput: TButton;
    procedure btnShowInputClick(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure AddMessage(Sender: TObject; const NewMsg: string);
  public
    { Public-Deklarationen }
  end;

...

procedure TfrmMitMemo.AddMessage(Sender: TObject; const NewMsg: string);
begin
  mmoMessages.Lines.Add(NewMsg);
end;
Delphi-Quellcode:
type
  TfrmInput = class(TForm)
    edtMessage: TEdit;
    btnAdd: TButton;
    procedure btnAddClick(Sender: TObject);
  private
    { Private-Deklarationen }
    FNewMessageCallback: TNewMessageEvent;
  public
    { Public-Deklarationen }
    property NewMessageCallback: TNewMessageEvent read FNewMessageCallback write FNewMessageCallback;
  end;
Delphi-Quellcode:
procedure TfrmMitMemo.btnShowInputClick(Sender: TObject);
begin
  frmInput.NewMessageCallback := AddMessage;
  frmInput.Show;
end;
Delphi-Quellcode:
procedure TfrmInput.btnAddClick(Sender: TObject);
begin
  if Assigned(FNewMessageCallback) then
    FNewMessageCallback(Self, edtMessage.Text);
end;
Das macht jetzt exakt das Gleiche ohne eine weitere Instanz da irgendwo noch reinzubasteln.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Sigi55

Registriert seit: 3. Jan 2010
36 Beiträge
 
Delphi 5 Professional
 
#26

AW: Meldungen aus einer Unit an ein Formular senden

  Alt 19. Apr 2015, 13:44
Moin Sir;

... Das macht jetzt exakt das Gleiche ohne eine weitere Instanz da irgendwo noch reinzubasteln.
Yes, Sir, hab ich getestet, macht es, prima Schlanker ist immer gut


Nur ...
Delphi-Quellcode:
procedure TfrmMitMemo.FormCreate(Sender: TObject);
begin
  TMessageManager.Create; // OK, geht
end;

procedure TfrmMitMemo.FormDestroy(Sender: TObject);
begin
  //TMessageManager.Free; // Fehler ??
end;
Hmm??

Und wie mach ich das z.B. mit der Progressbar ?

Danke und Tschüss

Sigi
  Mit Zitat antworten Zitat
Sigi55

Registriert seit: 3. Jan 2010
36 Beiträge
 
Delphi 5 Professional
 
#27

AW: Meldungen aus einer Unit an ein Formular senden

  Alt 19. Apr 2015, 18:28
Hi,

also, habs nach längerem Hinsehen und vergleichen und try & error selbst
rausgefunden :

Ich muss nix 'createn', also auch nix zerstören

Hat sich erledigt, Danke.

Was mir noch durch den Kopf geht, ist:

Delphi-Quellcode:
procedure TfrmMitMemo.Button3Click(Sender: TObject);
var
  Generator: TMessageGenerator;
  s : string;
begin
  s := 'test2';
  Generator := TMessageGenerator.Create;
  try
    Generator.NewMessageCallback := AddMessage;
    Generator.OutPut(s);
  finally
    Generator.Free;
  end;
end;
Muss ich dieses Konstrukt immer anwenden wenn ich eine Procedure/Function aus
einer formlosen unit aufrufe, oder kann man das vereinfachen ??

Vielen Dank für eure Nachhilfe

Gruß

Sigi
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 10:50 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