AGB  ·  Datenschutz  ·  Impressum  







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

Eigenschaften aus dem OI in "Create" benutzen

Ein Thema von TheMiller · begonnen am 2. Okt 2006 · letzter Beitrag vom 2. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Eigenschaften aus dem OI in "Create" benutzen

  Alt 2. Okt 2006, 15:34
Schon wieder ich..

komme mir schon fast blöd vor, aber habe wieder eine kleine Frage:

Ich habe eine Eigenschaft im OI (published) deklariert und einen Pfad zum Bild angegeben. Doch diese Variable ist zum Zeitpunkt "Constructor TImageButton.Create(..)" nicht verfügbar und im Paint kann ich das Bitmap nicht laden, weil es sonst durch das ständige neu Laden flimmern würde. Wie müsste der Code richtig sein?

Achja: Gebe ich im constructor einen Pfad (statisch) ein, klappt alles. Die Variable ist wirklich zu diesem Zeitpunkt leer. hier mein Code

Delphi-Quellcode:
  private
    { Private-Deklarationen }
    imgnormal: String;
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
  published
    { Published-Deklarationen }
    property ImageNormal: String read imgnormal write imgnormal;
  end;

  [..]

  constructor TImageButton.Create(AOwner: TComponent)
  begin
    inherited Create(AOwner);
    Glyph.loadFromFile(imgnormal);
  end;
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Eigenschaften aus dem OI in "Create" benutzen

  Alt 2. Okt 2006, 15:44
Schreibe eine Setter-Methode für ImageNormal:

property ImageNormal: String read imgnormal write SetImageNormal; und dort kannst Du das gewünschte erledigen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Eigenschaften aus dem OI in "Create" benutzen

  Alt 2. Okt 2006, 15:49
Oder pack den Code, der die persistenten Eigenschaften einer Komponente benötigt, in die AfterConstruction-Methode
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#4

Re: Eigenschaften aus dem OI in "Create" benutzen

  Alt 2. Okt 2006, 15:50
Hm...

Was ist eine "Setter-Methode"?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Eigenschaften aus dem OI in "Create" benutzen

  Alt 2. Okt 2006, 15:56
Zitat von DJ-SPM:
Was ist eine "Setter-Methode"?
Eine Methode die Aufgerufen wird wenn das Property gesetzt wird. Damit können z.B. Range-Checks und Validierungen durchgeführt werden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Eigenschaften aus dem OI in "Create" benutzen

  Alt 2. Okt 2006, 15:57
Eine Methode die bei der Property hinterlegt werden kann, in welcher man die übergeben Werte prüfen und entscheiden kann, ob man sie in den privaten member übernimmt.

Delphi-Quellcode:
procedure SetImageNormal( Value: string);
begin
   if ...
      imgnormal := Value;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#7

Re: Eigenschaften aus dem OI in "Create" benutzen

  Alt 2. Okt 2006, 16:01
Puh.. kannst du mir da mal bitte ein Beispiel zeigen.

Habe die Prozedur

Delphi-Quellcode:
protected
  procedure AfterConstruction; override;

[..]

procedure TImageButton.AfterConstruction;
begin
  inherited;
  ShowMessage('SD');
  Glyph.LoadFromFile(imgnormal);
end;
Aber das hat auch nicht geholfen
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#8

Re: Eigenschaften aus dem OI in "Create" benutzen

  Alt 2. Okt 2006, 17:15
So, hab's jetzt auch nochmal mit der Prozedur

Delphi-Quellcode:
procedure TImageButton.SetImageNormal( Value: string);
begin
  imgnormal := Value;
  Glyph.LoadFromFile(imgnormal);
end;
probiert, aber ich weiß nicht, wann ich die Aufrufen muss. Der Wert "imgnormal" ist allerdings auch leer.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Eigenschaften aus dem OI in "Create" benutzen

  Alt 2. Okt 2006, 17:20
Du hast das mißverstanden. diese Methode wird aufgerufen, wenn du im oi einen Pfad zuweist. dieser wird dann in der dfm gespeichert und wird beim Erzeugen der form dann herangezogen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#10

Re: Eigenschaften aus dem OI in "Create" benutzen

  Alt 2. Okt 2006, 17:27
Okay,

klingt logisch! Und wie kann ich diese Methode bei dir Property hinterlegen oder geschieht dies automatisch und im Quelltext reicht einfach dieser Code

Delphi-Quellcode:
procedure TImageButton.SetImageNormal(Value: string);
begin
      imgnormal := Value;
end;
mit der Deklaration in "protected"

procedure SetImageNormal(Value: String);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:03 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