AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Im OI zugewiesener Wert wird nach Progr.-Start überschrieben
Thema durchsuchen
Ansicht
Themen-Optionen

Im OI zugewiesener Wert wird nach Progr.-Start überschrieben

Ein Thema von scrat1979 · begonnen am 1. Apr 2007 · letzter Beitrag vom 4. Apr 2007
Antwort Antwort
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#1

Im OI zugewiesener Wert wird nach Progr.-Start überschrieben

  Alt 1. Apr 2007, 20:24
Hallo zusammen,

ich habe mit einer meiner Komponenten ein kleines Problem, was mir allerdings schon öfters auch bei anderen Komponenten aufgefallen ist. Es handelt sich um eine von TCustomLabel abgeleitete Komponente, welche in einem Label das Datum/Uhzeit in diversen Formaten anzeigt.

So, nun zum Problem. Ändere ich im OI die Art der Anzeige wird ein gewisses TimerIntervall zugewiesen. Möchte man dies (Intervall) aber danach verändern, kann man dann im OI den entsprechenden Wert eingeben (sinnvoll z.B. bei eigenem "Custom" Format). Startet man nun das Programm, dann wird im Konstruktor der Wert allerdings wieder durch den "Standardwert" überschrieben. Dass es im Konstruktor passieren muss, ist mir bewusst, allerdings sind sämtliche Versuche fehlgeschlagen, den Fehler zu beheben. Hoffe einer von Euch kann mir weiterhelfen. Den Source habe ich angehängt - wer ihn selber benutzen möchte, nur zu

Grüsse,

SCRaT
Angehängte Dateien
Dateityp: pas datetimelabel_213.pas (7,6 KB, 9x aufgerufen)
Michael Kübler
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Im OI zugewiesener Wert wird nach Progr.-Start überschri

  Alt 1. Apr 2007, 21:35
Das Problem dabei liegt darin, dass dein ShowTimeAs Eigenschaft beim Laden deinen Timerintervall wieder überschreibt - schliesslich legst du bei "Custom" wieder 500 ms fest. Entweder - oder. Du musst dich von daher entscheiden. Die ShowTimeAs wird einfach nur später geladen als deine Intervall-Eigenschaft.

Problemlösung: Verhindere das Setzen des Intervalls auf 500, wenn es csLoading gesetzt ist in ComponentState und der Value der Eigenschaft ShowTimeAs als "Custom" geladen wird.
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Im OI zugewiesener Wert wird nach Progr.-Start überschri

  Alt 1. Apr 2007, 21:42
Ah! Vielen Dank für den Tip mit csLoading...

Habe es nun so gelöst, scheint prima zu funktionieren:

Delphi-Quellcode:
procedure TDateTimeLabel.SetDateTimePresentation(Value: TDateTimePresentation);
begin
  if not (csloading in ComponentState) then Begin;

  If FDateTimePresentation <> Value Then
    begin
      FDateTimePresentation := Value;

      // TimerIntervall festlegen
      case FDateTimePresentation of
        dtpCustom: SetfTimerIntervall(500);
        dtpTime: SetfTimerIntervall(500);
        dtpDateTime: SetfTimerIntervall(30000);
        dtpLongDate: SetfTimerIntervall(30000);
        dtpWeekdayDate: SetfTimerIntervall(30000);
        dtpWeekdayDateTime: SetfTimerIntervall(30000);
      end;

      ShowTheTime(self);
    end;
  end;
end;
Noch eine Verständnis-Frage: Wann genau (von wann--bis wann) liegt denn der Status "csLoading" eigentlich vor?

SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Im OI zugewiesener Wert wird nach Progr.-Start überschri

  Alt 1. Apr 2007, 21:44
Grob gesagt, wenn die Komponenten aus den Resourcen bzw. der DFM "gestreamed" werden. Näheres dazu in der Hilfe zu TComponentState
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Im OI zugewiesener Wert wird nach Progr.-Start überschri

  Alt 1. Apr 2007, 21:46
Zitat von Muetze1:
[...]
Näheres dazu in der Hilfe zu TComponentState
Hätte ich auch selbst drauf kommen können

Vielen Dank nochmals!

SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Im OI zugewiesener Wert wird nach Progr.-Start überschri

  Alt 4. Apr 2007, 00:11
Habe dazu noch eine Verständnisfrage:

Weise ich aber die Variable im Konstruktor direkt zu, z.B.

FDateTimePresentation := dtpTime; ... dann wird der im OI zugewiesene Wert beim Start dennoch NICHT überschrieben. Warum?


SCRaT
Michael Kübler
  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 06:27 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