Delphi-PRAXiS

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 Lauftext in der Titelleiste ? (https://www.delphipraxis.net/115253-lauftext-der-titelleiste.html)

Vader 9. Jun 2008 10:23


Lauftext in der Titelleiste ?
 
hallo

kann man in der titelleiste eines fensters einen text laufen lassen,wenn ja wie ???
mfg vader

divBy0 9. Jun 2008 10:46

Re: Lauftext in der Titelleiste ?
 
die JEDI-Komponenten liefern da was - TJvAnimTitle

Vader 9. Jun 2008 10:55

Re: Lauftext in der Titelleiste ?
 
hallo

ohne die JEDI geht das nicht ???
mfg vader

mkinzler 9. Jun 2008 10:56

Re: Lauftext in der Titelleiste ?
 
Wenn eine Jedi-Kompo das kann, ist es natürlich auch möglich, das selber zu entwickeln.

divBy0 9. Jun 2008 11:56

Re: Lauftext in der Titelleiste ?
 
Ganz einfach ist es natürlich mit einem Timer einfach vor dem Titel nach und nach ein Leerzeichen einzufügen und die Caption des Forms zu aktualisieren. Sieht evtl. nicht so schön aus, ist aber schnell realisierbar.

Todd 9. Jun 2008 14:51

Re: Lauftext in der Titelleiste ?
 
Hallo,

meine erste Anfangslösung, da es mich selbst interessiert hat. Aber irgendwie komme ich nun nicht mehr weiter. Das ganze wirkt ob der Farbgebung doch recht merkwürdig. Vielleicht kann man ja dem Canvas einen transparenten Hintergrund verschaffen?

Delphi-Quellcode:
C++ Quellcode Datei
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int x;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
  x      = 200;
  FLAG   = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  if (FCanvas)
    {
      if (x == 80) FLAG = 1;
      if (x == 200) FLAG = 0;
      SetNewPos();
      FCanvas->TextOutA(x,8,"Lauftext");
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
  FCanvas              = new TCanvas;
  FCanvas->Handle      = GetWindowDC(Handle);
  FCanvas->Brush->Color = clGreen;
  FCanvas->Font->Color = clWhite;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
  delete FCanvas;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SetNewPos()
{
 if (FLAG == 0) x--;
 else          x++;
}
Delphi-Quellcode:
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:   // IDE-managed Components
   TTimer *Timer1;
   void __fastcall Timer1Timer(TObject *Sender);
   void __fastcall FormShow(TObject *Sender);
   void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
private:   // User declarations
   void __fastcall SetNewPos();
public:      // User declarations
   __fastcall TForm1(TComponent* Owner);
   TCanvas* FCanvas;
   int FLAG;
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Sorry für den C++ Code, hatte keine Zeit das in Pascal zu ändern...

Wie gesagt es funktioniert teilweise, die Farbgebung stimmt nicht, aber einfach selbst testen...

RavenIV 10. Jun 2008 08:03

Re: Lauftext in der Titelleiste ?
 
Zitat:

Zitat von Vader
kann man in der titelleiste eines fensters einen text laufen lassen,wenn ja wie ???

Bitte mach nicht so einen Quatsch.
Es gibt schon genug Blinki-Bunti-Anwendungen für Windows (WinAmp und Konsorten).
Da muss man nicht mit Gewalt den User dazu bringen, sich alles zu "verschönern".

Was willst Du eigentlich mit der Laufschrift erreichen?

Vader 11. Jun 2008 13:45

Re: Lauftext in der Titelleiste ?
 
hallo

das ist ein ganz kleines programm für einen arbeitskollegen,und der kollege hat immer so einen bestimmten spruch drauf und als witz wollte ich seinen spruch in der titelleiste laufen lassen
mfg vader

mr_emre_d 11. Jun 2008 14:33

Re: Lauftext in der Titelleiste ?
 
ist zwar nicht ganz sauber und bin mir nicht sicher ob es richtig funzt aber so ungefähr sollte es gehen:

Code:
procedure TDeineForm.Animate( Speed: Byte );
var
  buf: char;
  str: String;
  l, i: Integer;
  procedure InitLength;
  begin
    if clientwidth < 500 then
      l:= clientwidth div 5
    else
      l:= clientwidth div 4;
  end;
begin
  str:= Caption;
  while not Application.Terminated do
  begin
    Application.ProcessMessages;
    InitLength;
    if length( str ) < l then
      for i := length( str ) to l do
        str:= str + ' ';
    buf:= str[1];
    delete( str, 1, 1 );
    str:= str + buf;
    caption:= str;
    sleep( speed ); // 50 - 100 = optimal
  end;
end;
:cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 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