AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi nichtvis. Kompo. ruft Formular auf -Zugriff auf Properties ?
Thema durchsuchen
Ansicht
Themen-Optionen

nichtvis. Kompo. ruft Formular auf -Zugriff auf Properties ?

Ein Thema von APP · begonnen am 24. Feb 2003 · letzter Beitrag vom 24. Feb 2003
Antwort Antwort
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#1

nichtvis. Kompo. ruft Formular auf -Zugriff auf Properties ?

  Alt 24. Feb 2003, 15:02
Hallo!

Ich versuche mich an meiner ersten Komponente, bin auch schon recht weit, habe aber ein Problem:

Meine Komponente besteht aus einem nichtvisuellen (FlappError.pas) Teil und einem Formular (FlappErrorDlg) einem Exceptiondialog.

Im nichtvisuellen Teil behandle ich die Exception(s) und die Properties (MailServerType, Hardcopy, Silent, ...) meiner Komponente.

Wenn nun ein Fehler abgefangen wurde, sammle ich die Daten und öffne das Fenster mit dem Exceptiondialog modal.

In diesem Fenster sind einige Buttons, u.a. der für "eMail Senden".
Nun möchte ich in Abhängigkeit des MailServerType-Properties (POP oder SMTP) eine eMail versenden.

In meinem Formular habe ich aber keinen Zugriff auf die Properties von FlappError.pas, ich kann nur auf die Typen, Konstanten und Variablen die dort deklariert sind zugreifen.

Im Moment helfe ich mir damit, dass ich die Properties die ich benötige über Variablen 'laufen' lasse, mir kommt dies aber nicht sehr elegant vor.

Kann mir jemand helfen?
Vielen Dank,
Armin
Armin P. Pressler
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 24. Feb 2003, 15:29
Hi APP und herzlich willkommen,

es tut mir wirklich leid, aber ich verstehe nicht wirklich, was Du jetzt willst. Kannst Du ein bisschen genauer auf Dein Problem eingehen udn ggf. ein Code-Bsp. für die betreffenden Stellen liefern?

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#3
  Alt 24. Feb 2003, 16:07
Ups, gleich mein erstes Posting total verhaut

Ich hoffe mein Source ist besser lesbar als mein Text:

Delphi-Quellcode:
--------------------[nichtvisuelle Kompo FlappError.pas]----------------------
PUBLISHED
PROPERTY Options: TOptions READ FOptions WRITE FOptions; // Da steckt Silent drinnen
PROPERTY EmailOptions: TEmailOptions READ FEmailOptions WRITE SetEmailOptions; // Da steckt die eMailadresse drinnen
...

PROCEDURE TFlappError.ShowErrorDLG(sShort, sLong: STRING); // Dialog zeigen
BEGIN
   WITH fFlappErrorDlg DO
      BEGIN
         TRY
            ...
            re_simple.Text := sShort; // RichEdit auf Formular
            re_detail.Text := sLong; // RichEdit auf Formular
            Caption := 'ERROR in ' + sFILENAME;
            Showmodal;
            ...
         FINALLY
            ...
         END;
      END;
END;
--------------------[Formular TfFlappErrorDlg ]----------------------
IMPLEMENTATION

USES FlappError;
....

PROCEDURE TfFlappErrorDlg.btn_eMailClick(Sender: TObject);
VAR
  aMessage : STRING;
  aBody : STRING;
BEGIN
  TRY
    aBody := (StringReplace(re_simple.Text, #13#10, '%0D%0A', [rfReplaceAll])) + '%0D%0A' +
      (StringReplace(re_detail.Text, #13#10, '%0D%0A', [rfReplaceAll]));
    aMessage := 'mailto:' + sEMAILADRESS + '?subject=' +
      Application.Title + '&body=' + Trim(aBody);
    ShellExecute(0, PChar('open'), PChar(aMessage), NIL, NIL, SW_SHOWNORMAL);
  EXCEPT
    IF NOT (opSilent) THEN
      ShowMessage('Can not send an eMail');
  END;
END;
sEMAILADRESS und opSilent sind nun Variablen von "FlappError.pas", da ich von der Formularunit "TfFlappErrorDlg.pas" nicht auf die Properties Options und EmailOptions zugreifen kann.


so, dass wäre nun geschafft,
Armin

P.S Nun habe ich auch gelernt, dass man NIEMALS in der Vorschauansicht des Forums den Back-Button des Browsers drücken darf!
Armin P. Pressler
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 24. Feb 2003, 16:17
Das einfachste ist, wenn Du in Deinem Form eine property deklarierst.
Delphi-Quellcode:
type TfFlappErrorDlg = class....
...
  public
    property FlappError: TFlappError read FFlappError write FlappError;
    ...
  end;
Jetzt kannst Du folgendes schreiben
Code:
PROCEDURE TFlappError.ShowErrorDLG(sShort, sLong: STRING); // Dialog zeigen
BEGIN
   WITH fFlappErrorDlg DO
      BEGIN
         TRY
            [color=#f60000]FlappError := Self;[/color]
            ...
            re_simple.Text := sShort; // RichEdit auf Formular
            re_detail.Text := sLong; // RichEdit auf Formular
            Caption := 'ERROR in ' + sFILENAME;  
            Showmodal;
            ...
         FINALLY
            ...
         END;
      END;
END;
Anschliessend kannst Du auf die Eigenschaften der Komponente innerhalb Deines Dialoges ganz normal zugreifen. Wichtig: die Unit für die Komponente muss in der Unit des DialogFensters in der oberen uses-Klausel stehen.

......

P.S.
Zitat:
Ups, gleich mein erstes Posting total verhaut..
So schlimm ist es ja auch nicht
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#5
  Alt 24. Feb 2003, 16:35
Vielen Dank, es Funktioniert!

Armin
Armin P. Pressler
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:12 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