AGB  ·  Datenschutz  ·  Impressum  







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

Sich selbst ausblendendes Label

Ein Thema von meierotto · begonnen am 5. Aug 2005 · letzter Beitrag vom 9. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2      
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#1

Sich selbst ausblendendes Label

  Alt 5. Aug 2005, 13:29
Hallo,

ich möchte ein Label oder StaticText so nutzen, dass ich eine Information einblenden kann, welche sich nach x Sekunden wieder ausblendet.
Eine Lösung wäre sicherlich ein Timer, welchen man beim einblenden startet und der nach x Sekunden das Label wieder ausblendet. Aber gibt es da vielleicht eine elegantere Lösung?

Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Sich selbst ausblendendes Label

  Alt 5. Aug 2005, 13:51
Naja ... ich hätte da einen Vorschlag .... aber ob der dir gefällt ....

Du baust die eine neue Komponente, abgeleitet von deiner Wunschkomponente und der fügst du einen Thread hinzu der nach der bestimmten Zeit (ein sleep im Execute-Teil) mitteilt, das die Zeit abgelaufen ist und dann den Text ausblendet.
Ist natürlich ein bißchen viel Arbeit aber was solls
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#3

Re: Sich selbst ausblendendes Label

  Alt 5. Aug 2005, 13:52
du könntest ein TXYLabel vom TLabel ableiten, das das unterstützt.

könnte in etwa so aussehen:

Delphi-Quellcode:
TOwnLabel = class(TLabel)
private
  FHide: Boolean;
  FHideTime: Integer;
  FTimer: TTimer;
  procedure SetHide(NewVal: Boolean);
  procedure Tmr_Hide(Sender: TObject);
public
  property Hide: Boolean read FHide write SetHide;
  property HideTime: Integer reaf FHideTime write FHideTime;
  constructor Create;
  destructor Destroy;
end;

implementation

constructor TOwnLabel.Create;
begin
  inherited Create;
  FTimer:=TTimer.Create(FTimer);
  FTimer.Active:=False;
  FTimer.OnTimer:=Tmr_Hide;
end;

destructor TOwnLabel.Destroy;
begin
  FTimer.Free;
  inherited Destroy;
end;

procedure TOwnLabel.SetHide(NewVal: Boolean);
begin
  FHide:=NewVal;
  if FHide then
    begin
    FTimer.Interval:=FHideTime;
    FTimer.Active:=True;
    end
  else FTimer.Active:=False;
end;

procedure TOwnLabel.Tmr_Hide(Sender: TObject);
begin
  Self.Hide;
end;
bin mir nicht sicher ob das alles so stimmt...geht Self.Hide?
aber das prinzip sollte rictig sein
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Sich selbst ausblendendes Label

  Alt 5. Aug 2005, 14:49
Vielen Dank für beide interessanten Vorschläge. Ich habe die 2. Vaiante mal aufgegriffen, allerdings bleibe ich an zwei Stellen hängen:
Delphi-Quellcode:
interface

uses classes, stdCtrls, ExtCtrls;

type
TDelayLabel = class(TLabel)
private
  FHide: Boolean;
  FHideTime: Integer;
  FTimer: TTimer;
  procedure SetHide(NewVal: Boolean);
  procedure Tmr_Hide(Sender: TObject);
public
  property Hide: Boolean read FHide write SetHide;
  property HideTime: Integer read FHideTime write FHideTime;
  constructor Create;
  destructor Destroy;
end;

Procedure Register;

implementation

constructor TDelayLabel.Create;
begin
  inherited Create; //benötigt Übergabeparameter
  FTimer:=TTimer.Create(FTimer);
  FTimer.Enabled:=False;
  FTimer.OnTimer:=Tmr_Hide;
end;

destructor TDelayLabel.Destroy;
begin
  FTimer.Free;
  inherited Destroy;
end;

procedure TDelayLabel.SetHide(NewVal: Boolean);
begin
  FHide:=NewVal;
  if FHide then
    begin
    FTimer.Interval:=FHideTime;
    FTimer.Enabled:=True;
    end
  else FTimer.Enabled:=False;
end;

procedure TDelayLabel.Tmr_Hide(Sender: TObject);
begin
  Self.Hide; //funktioniert so leider nicht!
end;
Könnte da bitte nochmal jemand drüberschauen?
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#5

Re: Sich selbst ausblendendes Label

  Alt 5. Aug 2005, 14:52
jo

Create muss einen Parameter AOwner haben

Delphi-Quellcode:
constructor TFadingLabel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);//AOwner
  FTimer:=TTimer.Create(FTimer);
  FTimer.Enabled:=False;//Active Falsch
end;
das Hide könnte man durch Visible:=False ersetzen...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Sich selbst ausblendendes Label

  Alt 5. Aug 2005, 16:01
Hallo glkgereon,

irgendwie funktioniert das ganze noch nicht. Beim Zugriff auf die FTimer-Komponente kommt es zu einer Zugriffsverletzung. Ist die Initialisierung des Timers mit FTimer:=TTimer.Create(FTimer); korrekt?

Ich komme leider nicht weiter

Ich vergaß zu erwähnen, dass ich das ganze als Komponente installiert habe!

P.S. Wäre deine Wohnung für die Buntstiftesammlung groß genug?
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Sich selbst ausblendendes Label

  Alt 5. Aug 2005, 16:03
Hi,

Das mit dem Timer ist so nicht richtig. Der Parameter im Konstruktor "AOwner" stellt den "Eigentümer" der Komponente dar, also würde ich in diesem Fall das Label, also Self übergeben.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Sich selbst ausblendendes Label

  Alt 5. Aug 2005, 16:17
Hallo mirage228,

hab jetzt den Constructor umgestellt auf:
FTimer:=TTimer.Create(Self); das führt aber leider zum gleichen Fehler

  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Sich selbst ausblendendes Label

  Alt 5. Aug 2005, 17:39
hast du auch inherited Create aufgerufen?
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#10

Re: Sich selbst ausblendendes Label

  Alt 5. Aug 2005, 17:59
Delphi-Quellcode:
constructor TDelayLabel.Create;
begin
  inherited;
  FTimer:=TTimer.Create(FTimer);
  FTimer.Enabled:=False;
  FTimer.OnTimer:=Tmr_Hide;
end;
Reicht es nicht, inherited ohne alles aufzurufen?
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  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 02:49 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