Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Blinkendes Label (https://www.delphipraxis.net/59969-blinkendes-label.html)

konda 31. Dez 2005 17:02


Blinkendes Label
 
hallo, ich weiß nicht ob das hier die richtige kategorie ist. ich will ne komponente programmieren die in intervallen blinkt, also so ähnlich wie ein timer kompiniert mit einem label das abwechselnd sichtbar und unsichtbar ist. nur leider wiess ich nicht wie ich das ohne timer programmiere. :gruebel:

Knotti2005 31. Dez 2005 17:08

Re: Blinkendes Label
 
Üwrd dir gerne Helfen aber nen Timer brauchste schon es gab mal ne Komponente die das hatte aber ich ... weis leider nichtmehr woher ich sie hatte....

Ratte 31. Dez 2005 17:12

Re: Blinkendes Label
 
So eine Kompo ist bei den JEDIs dabei. Was spricht denn gegen einen Timer?

Ratte

PierreB 31. Dez 2005 17:16

Re: Blinkendes Label
 
Zitat:

Zitat von Ratte
Was spricht denn gegen einen Timer?

Das System würde somit ständig belastet werden und sollte es noch weitere Timer geben wird das Programm träg und langsam (bissl übertrieben, aber egal).

konda 1. Jan 2006 11:38

Re: Blinkendes Label
 
Zitat:

Zitat von Ratte
So eine Kompo ist bei den JEDIs dabei. Was spricht denn gegen einen Timer?

Ratte

wie soll ich den den timer in meiner komponenetenunit benutzen?

Sharky 1. Jan 2006 12:03

Re: Blinkendes Label
 
Zitat:

Zitat von konda
...wie soll ich den den timer in meiner komponenetenunit benutzen?

Hai konda,

ich habe mal schnell diese Klasse getippt. Eventuell ist da ja ein Denkanstoss für dich dabei ;-)
Delphi-Quellcode:
unit ShBlinkLabel;

interface

uses
  StdCtrls, ExtCtrls, Classes;

type
  TShBlinkLabel = class(TLabel)
  private
    fTimer: TTimer;
    fIntervall: integer;
    fAktiv: boolean;
  protected
    procedure OnTimer(Sender: TObject);
    procedure SetAktiv(aValue: boolean);
    procedure SetIntervall(aValue: integer);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property Intervall: integer Read fIntervall Write SetIntervall;
    property Aktiv: boolean Read fAktiv Write SetAktiv;
  published

  end;

implementation

{ TShBlinkLabel }

constructor TShBlinkLabel.Create;
begin
  inherited;
  fAktiv := False;
  fTimer := TTimer.Create(self);
  fTimer.OnTimer := OnTimer;
  fTimer.Interval := 500;
  fTimer.Enabled := fAktiv;
end;

destructor TShBlinkLabel.Destroy;
begin
  fTimer.Free;
  inherited;
end;

procedure TShBlinkLabel.OnTimer(Sender: TObject);
begin
  Visible := not (Visible)
end;

procedure TShBlinkLabel.SetAktiv(aValue: boolean);
begin
  fAktiv := aValue;
  fTimer.Enabled := aValue;
end;

procedure TShBlinkLabel.SetIntervall(aValue: integer);
begin
  fTimer.Enabled := False;
  fTimer.Interval := aValue;
  fTimer.Enabled := True;
end;

end.
Edit: Kleinen Fehler beseitigt

ichbins 1. Jan 2006 12:04

Re: Blinkendes Label
 
Variable in der Labelklasse

Delphi-Quellcode:
timer1:ttimer;
und dann im overloaded label.create der Unit

Delphi-Quellcode:
timer1:=ttimer.create(label1);
//edit: mist, sharkky war schneller

ManuMF 1. Jan 2006 12:20

Re: Blinkendes Label
 
Hallo,

Delphi-Quellcode:
procedure TShBlinkLabel.SetAktiv(aValue: boolean);
begin
  fAktiv := aValue;
  fTimer.Enabled := aValue;
  if not (aValue) then
    Visible := true;
end;
Die beiden Zeilen sollten noch hinzugefügt werden, damit das Label nicht unsichtbar bleibt, wenn es in diesem Moment gerade "ausgeschaltet" wird.

Gruß,
ManuMF

Mystic 1. Jan 2006 12:21

Re: Blinkendes Label
 
fIntervall wird nie gesetzt? Mir scheint, Sharky hat nicht viel geschlafen. :mrgreen:

Delphi-Quellcode:
constructor TShBlinkLabel.Create;
begin
  inherited;
  fAktiv := False;
  fIntervall := 500;
  fTimer := TTimer.Create(self);
  fTimer.OnTimer := OnTimer;
  fTimer.Interval := 500;
  fTimer.Enabled := fAktiv;
end;

{ ... }

procedure TShBlinkLabel.SetIntervall(aValue: integer);
begin
  fTimer.Enabled := False;
  fTimer.Interval := aValue;
  fTimer.Enabled := True;
  fIntervall := aValue;
end;

konda 1. Jan 2006 14:08

Re: Blinkendes Label
 
das ist alles einleuchtend, nur leider schaff ich es zurzeit nicht er zu testen. ich schaff es zwar die komponente zu installieren aber dann finde ich sie nicht mehr. :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 Uhr.
Seite 1 von 2  1 2      

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