AGB  ·  Datenschutz  ·  Impressum  







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

Ticker-Text

Ein Thema von Privateer3000 · begonnen am 6. Jan 2003 · letzter Beitrag vom 15. Aug 2003
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#1

Ticker-Text

  Alt 6. Jan 2003, 22:48
Hoi,

wie stellt man es unter Delphi an einen String
als Ticker auf einem Form von links nach rechts wiederholt
durchlaufen zu lassen.
Ich hätte da nicht mal ne Idee?!
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
tretmine

Registriert seit: 6. Jan 2003
36 Beiträge
 
Delphi 4 Standard
 
#2

Re: Ticker-Text

  Alt 6. Jan 2003, 23:35
Zitat von Privateer3000:
Hoi,

wie stellt man es unter Delphi an einen String
als Ticker auf einem Form von links nach rechts wiederholt
durchlaufen zu lassen.
Ich hätte da nicht mal ne Idee?!
Eine kleine Idee:

Nimm ein Label und eine TTime-Komponente.
Das Intervall von TTime legst du auf einen geeigneten Wert (z.B.: 100ms)
Tritt das Ereignis ein -also der Timer hat 100ms geliefert- (OnTimer) veränderst du die Caption des Labels.
Du schneidest vorne ein Zeichen des Strings der Caption ab und setzt hinten ein Zeichen deines Testes hin. Das müsste mit einer Zählvariablen gut klappen.

Leider kann ich dir keinen Source liefern, da ich die Hilfe für ttimer.ontimer nicht ganz verstanden habe. Schau es dir mal an. Falls du weißt wie man ein "TNotifyEvent"(siehe "Hilfe") behandelt, dürfte es kein Problem mehr sein.

MfG Phil
klein, rund und explosiv!
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#3
  Alt 7. Jan 2003, 01:50
thx
aber damit kann ich wenig anfangen.
Gibt es vielleicht eine Komponente die dies realisieren kann??
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 7. Jan 2003, 07:15
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  Text : STRING;
begin
   Text := Copy (Label1.Caption,2,length(Label1.Caption)-1)+
                Label1.Caption[1];
   Label1.Caption := Text;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
tretmine

Registriert seit: 6. Jan 2003
36 Beiträge
 
Delphi 4 Standard
 
#5
  Alt 7. Jan 2003, 12:50
Anfangs sollte man aber noch imho das Intervall setzen.

Also:
timer1.interval:=100; (*ms)

Da die Standarteinstellung für den Timer 1000 (also 1s) ist und dies dann eher nach nix aussieht.


(Kleine Zwischenfrage ohne unnötigerweise einen neuen Thread zu eröffnen)
@Lucky: Ist die procedure automatisch die OnTimer Eigenschaft, bzw. wird diese Procedure nach einem Intervall aufgerufen?

Ich verstehe immer noch nicht die "Hilfe" von Delphi:


Zitat:
property OnTimer: TNotifyEvent;

Beschreibung

Mit dem Ereignis OnTimer können Sie eine Behandlungsroutine schreiben, die in bestimmten Zeitabschnitten eine Aktion ausführt.
(Auszug)

(Unter Link TNotifyEvent steht):
Zitat:
type TNotifyEvent = procedure (Sender: TObject) of object;

Beschreibung

TNotifyEvent ist der Typ für Ereignisse, die keine Parameter benötigen. Diese Ereignisse benachrichtigen einfach die Komponente, daß ein bestimmtes Ereignis aufgetreten ist. So benachrichtigt beispielsweise OnClick (Typ TNotifyEvent) das Steuerelement, daß im Steuerelement ein Klickereignis stattgefunden hat. Der Parameter Sender ist das Objekt, das die Benachrichtigung erhält.
(Auszug)

MfG Phil
klein, rund und explosiv!
  Mit Zitat antworten Zitat
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#6
  Alt 7. Jan 2003, 13:15
HI !
Kurz zusammengefasst:

Die Procedure für OnTImer wird immer dann ausgeführt, wenn das Zeitintervall verstrichen ist. Gleichzeitig wird das Intervall wieder auf seinen Ausgangswert gestellt und läuft wieder ab, usw.

D.h.:
Interval: 1000 entspricht 1 Sekunde
Nach einer Sekunde wird die Procedure Timer1OnTimer(...) ausgeführt, dann nach einer weiteren Sekunde usw.

Das Problem an der obigen Lösung ist, dass das Label anfängt zu flackern (zumindest bei mir ), wenn man ein Intervall von 100 einstllt. Und ein größeres Intervall macht da keinen Sinn.

Wenn also einer von euch eine Komponente kennt, dann her damit !! Hatte das Problem schon vor einem Jahr versucht zu lösen, war aber zu faul mir eine vernünftige Kompo zu schreiben.

Gruß, Helld
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 7. Jan 2003, 13:36
Moin Zusammen,

da ich die Idee als solche ganz witzig fand, hab' ich das mal in eine kleine Kompo gegossen, aber, wie Helld schon so schön sagte, das Flackern nervt.
Wenn jemand eine Idee hat, wie man das verhindern kann...
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
R.Meyrat

Registriert seit: 6. Okt 2002
22 Beiträge
 
Delphi 2005 Personal
 
#8
  Alt 7. Jan 2003, 14:51
Hallo Zusammen nur so als Idee:

Ich habe ein Label auf ein Panel gelegt Rest siehe Code
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if label1.left = 0 then begin
    if label1.Width = 0 then begin
      label1.Left := panel1.Width;
      label1.Width := 32; // gewünschte Anfangsbreite
    end else begin
      label1.Width := label1.Width -1;
    end;
  end else begin
    label1.left := label1.left -1;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  timer1.Interval := 10;
  timer1.Enabled := true;
  panel1.Doublebuffered:=true;
end;
dieses Konstrukt flacker bei mir nicht sichtbar

Gruss Roger
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 7. Jan 2003, 15:15
Moin Zusammen,

nur mal so ein Schnellschuss auf Basis von TStaticText, damit das DoubleBuffered schon in der Kompo enthalten ist.

Ruckelt aber noch ganz schön. Wer's optimieren will: Nur zu

Delphi-Quellcode:
unit csTickerStatic;

interface
uses stdctrls,extctrls,classes;

type
  TcsTickerStatic = class(TStaticText)
  private
    FsTickerText : string;
    FcInterval : cardinal;
    FTimer : TTimer;
    FfRunning : Boolean;
    procedure OnTimer(Sender : TObject);
    function GetRunning: Boolean;
  public
    constructor Create(AOwner : TComponent); override;
    procedure Start;
    procedure Stop;
    property TickerText : string read FsTickerText write FsTickerText;
    property Interval : cardinal read FcInterval write FcInterval;
    property Running : Boolean read GetRunning;
  end;

  procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('csKompos',[TcsTickerStatic]);
end;

{ TcsTickerStatic }

constructor TcsTickerStatic.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  self.DoubleBuffered := true;
  self.Autosize := false;
  FsTickerText := 'Tickertext ';
  self.Caption := FsTickerText;
  self.Width := 100;
  self.Height := 16;
  FcInterval := 100;
  FTimer := TTimer.Create(self);
  FTimer.Interval := FcInterval;
  FTimer.Enabled := false;
  FTimer.OnTimer := OnTimer;
  FfRunning := false;
end;

function TcsTickerStatic.GetRunning: Boolean;
begin
  Result := FTimer.Enabled;
end;

procedure TcsTickerStatic.OnTimer(Sender: TObject);
begin
  if Length(FsTickerText) = 0 then
  begin
    exit;
  end;
  FTimer.Enabled := false;
  self.Caption := FsTickerText;
  FsTickerText := copy(FsTickerText,2,Length(FsTickerText))+FsTickerText[1];
  FTimer.Enabled := true;
end;

procedure TcsTickerStatic.Start;
begin
  FTimer.Enabled := true;
end;

procedure TcsTickerStatic.Stop;
begin
  FTimer.Enabled := false;
end;

end.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#10
  Alt 7. Jan 2003, 21:22
das ist mir einfach noch zu hoch...

hab erstmal luckie's Vorschlag weiterverwendet.
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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:34 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