Avatar billede sharpe Nybegynder
17. august 2007 - 19:24 Der er 4 kommentarer

Flashing tekst

Hej,

Jeg vil gerne udskrive noget tekst øverste, mid på skrivebordet, der forsvinder igen efter et par sekunder. Tekstens baggrund skal være gennemsigtig.

Jeg kunne bruge følgende men hvordan får man teksten til at forsvinde igen, efter de 2 sekunder?

procedure DrawTextOnDesktop(TextToDraw: string) ;
var
  Handle: HWND;
  Dc: HDC;
  ACanvas: TCanvas;
begin
  Handle := GetDesktopWindow;
  Dc := GetWindowDC(Handle) ;
  ACanvas := TCanvas.Create;
  try
    ACanvas.Handle := DC;
    BeginPath(ACanvas.Handle) ;
    ACanvas.Font.Color := clRed;
    ACanvas.Font.Name := 'Tahoma';
    ACanvas.Font.Size := 30;
    SetBkMode(ACanvas.Handle, TRANSPARENT) ;
    EndPath(ACanvas.Handle) ;
    ACanvas.TextOut(0, 0, TextToDraw) ;
  finally
    ReleaseDC(Handle, ACanvas.Handle) ;
    ACanvas.Free;
  end;
end;

DrawTextOnDesktop('Hej');
Avatar billede psycosoft-funware Nybegynder
17. august 2007 - 19:41 #1
sæt den ind i en timer komponent og sæt den til 2 sec. husk at disable timeren igen

fx procedure TForm1.Timer1.Enabled;

  DrawTextOnDesktop('test')
    Timer1.Enabled := False;
    end;
Avatar billede kammeyer Nybegynder
19. august 2007 - 00:41 #2
Bare et gæt...

Tjek hvem der "ejer" det skærmområde og bed den / de applikation(er) gentegne det område.

Måske Windows har en sådan rutine - men det kræver vel at du ved hvor stort et område du har "snavset" til.
Avatar billede kammeyer Nybegynder
19. august 2007 - 18:34 #3
Et andet alternativ er at

- lave en form,
- gøre den transparent
- på onShow sætte en timer aktiv med 2 sek.
- i event handleren disable timeren
- samt lukke formen.
Avatar billede sharpe Nybegynder
25. august 2007 - 23:42 #4
problemet med følgende:

fx procedure TForm1.Timer1.Enabled;

  DrawTextOnDesktop('test')
    Timer1.Enabled := False;
    end;

er at teksten forsvinder ikke, den skrives til skrivebordet og forbliver der indtil man sletter den. Hvordan sletter man tekst, som er blevet skrevet til skrivebordet? Det er netop det jeg er interesseret i, at finde ud af hvordan man får teksten til at forsvinde.

Kan man refreshe den del af skriverbordet hvor teksten befinder sig?

Pft for jeres hjælp!
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