Avatar billede snowball Novice
04. maj 2000 - 09:25 Der er 12 kommentarer og
1 løsning

Marquee

Er det muligt at lave en slags Marquee i Delphi ???

If so, hvordan ???

Teksten som skal vises skal hentes fra et felt i en Access DB, men det er ikke noget problem. Problemet (hvis det da er et problem) er at få teksten til at bevæge sig !

Kan det gøre så en smart måde (evt. via en VCL eller lign.) eller skal man til at lave en timer som flytter teksten et bestemt antal pixels i sekundet ?!?!?!?

Snowball
Avatar billede delphidaner Nybegynder
04. maj 2000 - 09:30 #1
Du kunne lave en timer med et passende interval, og en label med teksten. Label'en har en Left-værdi på 0. OnTimer event'en kunne se sådan ud:

if Label1.Left = Form1.Width then
  Label1.Left := 0
else
  Label1.Left := Label1.Left + 1;
Avatar billede blackthorne Nybegynder
04. maj 2000 - 09:37 #2
Der findes desuden et hav af freeware/sharekomponent der kan det. søg eventuelt på delphi super page http://delphi.icm.edu.pl/
Avatar billede snowball Novice
04. maj 2000 - 10:03 #3
delhpidaner: Tekst'en fortsætter altså bare videre ud af formen når den kommer til kanten !!!

Snowball
Avatar billede snowball Novice
04. maj 2000 - 10:09 #4
Whoops...en lille stavefejl i dit navn, sorry ;)

blackthorne: Af de komponenter der er på den side, er de enten shareware (med begrænset muligheder!) eller også virker de ikke i D5 Ent. !!!

Snowball
Avatar billede pellelil Nybegynder
04. maj 2000 - 11:18 #5
RxLib har også en http://www.rxlib.com/
Avatar billede sjensen Nybegynder
04. maj 2000 - 11:26 #6
her er lige et hjemmelavet forslag der ikke kræver andet en en stringvar og en timer:

var str = string:

begin
  str := table1.fieldbyname('xxx').asstring;  // sæt teksten fra db ind i str
  str := str + '  '; // et antal blanktegn (mellemrum) der passer sådan at teksten helt forsvinder inden den kommer begynder igen i højre side. F.eks. 100 eller hvor mange der nu skal til.

procedure timer1timer(sender : tobject);
begin
  str := copy(str,2,(len(str)-1)) + copy(str,1,1); // denne funktion sætter hele tiden den forreste char bagest i strengen.
  edit1.text := str;  // eller label1.caption := str;
end;

Ved at sætter timeren til et fornuftigt interval vil det se ud som om teksten forsvinder us af feltet til venster og efterfølgende kommer ind igen fra højre.
Ved at ændre på måden str sammensættes på i timeren kan du få teksten til at bevæge sig mod højre i stedet, o.s.v.

Så enkelt kan det faktisk gøres.
Avatar billede sjensen Nybegynder
04. maj 2000 - 11:28 #7
Jeg tror mine fingre sidder forkert idag. Se lige bort fra stavebørgerne ;-)
Avatar billede snowball Novice
04. maj 2000 - 14:14 #8
pellelil: Hvor i RXLib finder du lige en Marquee funktion ???

Snowball
Avatar billede pellelil Nybegynder
04. maj 2000 - 15:16 #9
I (Component) folderern "RX Tools" finder du componentet "SecretPanel" (nr. 12 fra Venstre). Den er (som navnet hentyder) beregnet til at lave et "skult panel" som kan scroll'e en tekst når denne "click'es".

Avatar billede pellelil Nybegynder
04. maj 2000 - 15:21 #10
Og i kraft af at RxLib er med fuld source så har du alle muligheder for at se hvordan det skal laves hvis "du selv vil" (sourcen finder du i "RxCtrls.pas"
Avatar billede snowball Novice
04. maj 2000 - 15:38 #11
pellelil: Det virker bare som det skal. Takker :-)

Snowball
Avatar billede delphidaner Nybegynder
08. maj 2000 - 11:35 #12
Jeg har undersøgt mit forslag, og det virker også!
Avatar billede buha Nybegynder
01. maj 2001 - 11:42 #13
Vil i ikke sende et eksempel til mig på buha@sol.dk tak! hvor jeg kan åbner det i delhpi 4
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester