AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Globale Styles

Ein Thema von lizardking · begonnen am 6. Mai 2006 · letzter Beitrag vom 7. Mai 2006
Antwort Antwort
lizardking

Registriert seit: 2. Sep 2005
76 Beiträge
 
Delphi 7 Enterprise
 
#1

Globale Styles

  Alt 6. Mai 2006, 23:05
Hallo zusammen,

wahrscheinlich bin ich nur nicht auf die richtigen Stichworte zur Suche nach meiner Frage gekommen. Mich wuerde mal interessieren, wie manche Komponenten den Style einer Anwendung aendern, nur wenn man sie auf dir Form zieht.

Beispiel: Ich habe ein bereits fertiges Form mit einigen Controls und setze dann die Komponente XY darauf, die dafuer sorgt, dass saemtliche Controls auf einmal im Style Flat sind.

Wie macht man sowas ? Meine Idee waere ja im Create saemtliche Controls des Parents durchzugehen und auf Flat zu setzen. Aber dafuer muesste ich sicher sein, dass meine Komponente ganz zuletzt erstellt wird.

Wenn jemand Bescheid weiss, bin ich fuer jede Hilfe dankbar :)

Gruesse,

Lizzy
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Globale Styles

  Alt 7. Mai 2006, 01:05
Du könntest die komponente ja auch beim onshow aktiv werden lassen bzw. die komponenten explizit in eine liste eintragen, die dein manager dann stylen soll.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Globale Styles

  Alt 7. Mai 2006, 09:18
Alle von TComponent abgeleiteten Komponenten/Objecte haben im Protected die Methode Notification. Diese wird unter anderem aufgerufen wenn ein neues Control aufs Form gepackt wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
lizardking

Registriert seit: 2. Sep 2005
76 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Globale Styles

  Alt 7. Mai 2006, 10:45
Zitat von SirThornberry:
Alle von TComponent abgeleiteten Komponenten/Objecte haben im Protected die Methode Notification. Diese wird unter anderem aufgerufen wenn ein neues Control aufs Form gepackt wird.
Ahhhhhhh ! Danke, das ist schonmal ein guter Ansatz. Jetzt hab ich nur ein Problem. Wenn ich Folgendes in Notification mache, bekomme ich 'ne AV:

Delphi-Quellcode:
procedure TMyClass.Notification(AComponent: TComponent;
  Operation: TOperation);

begin
  inherited;
  if (FInit) and (Operation = opInsert) then
    if AComponent is TEdit then
      (AComponent as TEdit).Text := 'abc';
end;
FInit setze ich am Ende meines Constructors auf true, so dass die Notification erst dann bearbeitet wird, wenn meine Komponente vollstaendig initialisiert ist. Wenn AComponent wirklich ein TEdit ist, dann tritt die AV genau beim Setzen von Text auf. Setze ich hingegen z.B. Ctl3d auf false, gibt's keine AV, aber das Edit ist immer noch ein 3D-Control.

Fuer mich sieht das so aus, als ob dieses Notify irgendwie mitten im Create der neuen Komponente aufgerufen wird. Sie ist schon so weit kreeirt, dass ich mittels "is" erkennen kann, dass es ein TEdit ist, aber doch nocht nicht so weit da, dass ich die Properties setzen kann.

Merkwuerdig...

Aber Danke schonmal fuer den Denkansatz

Gruesse,

Lizzy


EDIT:

Es ist genau so, wie vermutet Wenn ich in der Notification-Methode alle Components vom Owner meiner Komponente durchgehe und wenn das Component ein TEdit ist die Property setze UND das in einem try...except-Block mache, dann funktioniert es "einigermassen".
"Einigermassen", weil : Ich setze meine Komponente auf eine Form. Dann setze ich darauf ein TEdit mit Namen Edit1. Dann passiert gar nix. Jetzt setze ich noch ein TEdit auf die Form. Dann aendert sich der Text von Edit1 in "abc", Edit2 bleibt unveraendert. Setze ich danach irgendeine Komponente auf die Form, hat auch Edit2 den Text "abc".

Aaalso : Notification wird aufgerufen BEVOR die neue Komponente wirklich komplett initialisiert ist. Wenn ich das Projekt im Debugger starte, dann bekomme ich auch 'ne AV, ohne Debugger laeuft das Projekt genau wie gewuenscht. Arrghh... gibt's keine Methode, die aufgerufen wird NACHDEM eine neue Kompo komplett in die Form eingefuegt wurde ?
  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 18:15 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