AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Komponente vor der Erzeugung der 1. Form aktivieren?
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente vor der Erzeugung der 1. Form aktivieren?

Ein Thema von APP · begonnen am 26. Feb 2003 · letzter Beitrag vom 2. Mär 2003
Antwort Antwort
Benutzerbild von APP
APP

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

Komponente vor der Erzeugung der 1. Form aktivieren?

  Alt 26. Feb 2003, 17:48
Hallo,

Endlich habe ich den Prototypen meiner Exception-Handler-Komponente fertig, schon habe ich wieder ein (für mich) unlösbares Problem:

Ich 'klebe' meine Komponente auf das Hauptformular, in meiner Kompo steht:
Delphi-Quellcode:
PROCEDURE TFlappError.Loaded;
BEGIN
   IF Active THEN Application.OnException := onFlappException; // globalen Exception-Handler aktivieren
END;
und alles funktioniert soweit.

Nun habe ich aber eine Applikation, wo im onCreate-Ereignis Ini-Dateien, Oracle-Db Anmeldungen u.ä. verarbeitet werden. Tritt nun dort ein Fehler auf, (sozusagen bevor die Form fertig erstellt wurde) ist auch meine Exception-Kompo machtlos, da sie ja auch noch nicht erstellt wurde.

Meine Frage ist nun, kann ich eine Komponente vor dem Erzeugen der allerersten Form aktivieren, oder ist meine ganze Arbeit umsonst bzw. mein Ansatz falsch?

Ich habe auch beim Jedi Projekt nachgeschaut, dort gibt es eine Unit Namens "ExceptDlg.pas" die in den Projektquelltext eingebunden wird.
Mir ist das mit meiner Kompo nicht gelungen, außerdem wollte ich ja eine Kompo und keine Unit.

Vielleicht weiß jemand Rat?

Armin
Armin P. Pressler
  Mit Zitat antworten Zitat
MadMason

Registriert seit: 9. Nov 2002
Ort: Altenburg
126 Beiträge
 
Delphi 2005 Architect
 
#2
  Alt 27. Feb 2003, 14:19
poste ma den source mit dem du sie im projektquelltext eingebunden hast und wo der fehler auftritt.
Einstein ist tot
Newton ist tot
und mir ist auch schon ganz schlecht
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#3
  Alt 28. Feb 2003, 16:09
@MadMason,
danke für Dein Angebot, aber die ganze Kompo posten würde den Rahmen dieses Forums wohl sprengen.

Die Kernfrage meines ersten Postings war eigentlich ob es möglich sei, eine Komponente vor dem 1. Formular zu erzeugen/aktivieren.

Ich habe mich nun intensiver mit der Jedi-Library beschäftigt und werde wohl die Unit "ExceptDlg.pas" benutzen und ggf. erweitern und die Arbeit an meiner Kompo als "Lehrstück" betrachten.

Armin
Armin P. Pressler
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4
  Alt 28. Feb 2003, 16:12
Du kannst Komponenten auch ausserhalb Deines Forms erstellen, allerdings, können die dann nicht im Form sein. Dass heisst, eigentlich würde es auch eine "stinknormalle" Klasse tun, da die Komponente manuell im Code erstellt und zerstört werden muss. (Zwischen Application.Initialize; und Application.CreateForm(...)

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 28. Feb 2003, 19:22
Moin Armin,

wenn die Kompo Bestandteil des Formulares ist, dann ist sie im FormCreate bereits vorhanden (sonst könnte man dort ja auch keine Eigenschaften der Komponenten einstellen).

Du könntest auch mal versuchen die Kompo (wenn sie ausserhalb des Formulares ist) in der Projektdatei zu erzeugen, oder im initialization Abschnitt der Formular Unit (Freigabe nicht vergessen )
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#6
  Alt 1. Mär 2003, 10:36
Hallo Christian,
genau das ist mein Probblem, irgendwie habe ich im Moment keine Idee wie der Code aussehen muß :

Delphi-Quellcode:
PROGRAM Compo_test;

uses
  Forms,
  FlappError, // Meine Komponente
  uMain in 'uMain.pas{Form1},
  Unit2 in 'Unit2.pas{Form2},
  Flapp_Utils in 'Flapp_Utils.pas';
{$R *.res}

BEGIN
  Application.Initialize;
  
  ???? :-)

  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
END.
Armin
Armin P. Pressler
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 1. Mär 2003, 14:16
Moin Armin,

hier mal zwei Möglichkeiten:
Beide setzen allerdings voraus, dass sich die Kompo nicht auf einem der Formulare befindet.

Delphi-Quellcode:
// Variante 1

PROGRAM Compo_test;

uses
  Forms,
  FlappError, // Meine Komponente
  uMain in 'uMain.pas{Form1},
  Unit2 in 'Unit2.pas{Form2},
  Flapp_Utils in 'Flapp_Utils.pas';
{$R *.res} 

var
  leWork : TFlappError;

BEGIN
  Application.Initialize;
  
  leWork := TFlappError.Create;
  try
    Application.CreateForm(TForm1, Form1);
    Application.CreateForm(TForm2, Form2);
    Application.Run;
  finally
    FreeAndNil(leWork);
  end;
END.


// Variante 2

Unit Unit1;

interface

//...


var
  leWork : TFlappError;

//...

implementation

//...

initialization
begin
  leWork := TFlappError.Create;
end;

finalization
begin
  FreeAndNil(leWork);
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#8
  Alt 2. Mär 2003, 18:42
Chris,
es funktioniert (wie üblich nach Deiner Lösung),
vielen Dank!


Armin

p.s. Das Naheliegende kann oft sehr weit weg sein...
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  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 13:20 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