Avatar billede smith1 Nybegynder
13. november 2004 - 14:09 Der er 9 kommentarer og
1 løsning

En boks nede ved uret

Hvordan kan jeg lave en boks nede ved uret?? den skal dukke op lige over statusbaren.

lige som den Gmail boks:
http://miranda-im.org/download/files/screenshot/45-1-1097586313-screen.jpg
Avatar billede vallemanden Nybegynder
13. november 2004 - 16:01 #1
Du skal bruge noget der hedder Ballontext
Avatar billede smith1 Nybegynder
13. november 2004 - 16:18 #2
det skal være sådan en på billedet. ikke en BalloonBox
Avatar billede smith1 Nybegynder
13. november 2004 - 19:15 #3
sådan her: http://miranda-im.org/download/files/screenshot/50-1-1090694247-previewbevel.gif

hvordan laver jeg en boks som dukker op nede ved uret?
Avatar billede doc404 Novice
13. november 2004 - 22:29 #4
I bund og grund er det en Standard form du skal bruge.

Prøv følgende. Lav en ny application.

- sæt formens bredde til f.eks. 200 og højden til 50.
- Sæt BorderStyle til bsNone.

I FormCreate tilføjer du følgende:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Left := Screen.WorkAreaRect.Right - Width - 10;
  Top := Screen.WorkAreaRect.Bottom - Height - 10;
end;

Så får du en form, der åbner nederst i højre hjørne.

Også er det blot at fylde på ;-)
Avatar billede doc404 Novice
13. november 2004 - 22:40 #5
Eller hvis det skal være lidt smart...

Så sæt en timer på og sæt intervallet til 10

I timer eventet tilføjer du følgende:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (Top + Height) < Screen.WorkAreaRect.Bottom then
    TImer1.Enabled := False;
  Top := Top - 5;
end;

og din FormCreate ændres til

procedure TForm1.FormCreate(Sender: TObject);
begin
  Left := Screen.WorkAreaRect.Right - Width - 10;
  Top := Screen.WorkAreaRect.Bottom - 10;
end;

Og så skal du blot designe formen som den skal se ud.
Avatar billede doc404 Novice
13. november 2004 - 22:44 #6
Glemte lige en detalje..

Lav følgende i formens OnClick eller på en knap

procedure TForm1.FormClick(Sender: TObject);
begin
  Close;
end;
Avatar billede smith1 Nybegynder
14. november 2004 - 15:45 #7
tak :) hvordan kan jeg få den til at køre ned igen?
Avatar billede jackass- Nybegynder
14. november 2004 - 22:19 #8
Kan godt være dette hører til et helt nyt spg, men eftersom 50% er i smith1's interesse, prøver jeg lige alligevel:

1) hvordan får han(vi) den til at køre ned igen.. altså ikke bare close;

2) effekten med at den "kører op" via en timer, har jeg lidt problemer med når jeg har flere forms.

I Form1 har jeg en OnClick, der skal trigge Form2 (altså den der skal køre op). Men det virker jo ikke med "Form2.Show;" for så vises den bare statisk i stedet for at "køre op".. Hvordan får man den til det? :-/
Avatar billede doc404 Novice
15. november 2004 - 01:13 #9
Nu begynder det jo at blive lidt avanceret ;-) Men her er et skud fra hoften...

Lav en form med en timer med interval 10 og en button

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Timer: TTimer;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure TimerTimer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    IsOpen : boolean;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  IsOpen := False;
  Left := Screen.WorkAreaRect.Right - Width - 10;
  Top := Screen.WorkAreaRect.Bottom - 10;
end;

procedure TForm1.TimerTimer(Sender: TObject);
begin
  if isOpen then
    begin
      // vi skal køre formen ned
      if (Top > Screen.WorkAreaRect.Bottom) then
        begin
          Timer.Enabled := False;
          IsOpen := False;
          Close; // undlad denne, hvis du har en anden måde at åbne formen på igen
        end
      else
        Top := Top + 5;
    end
  else
    begin
      // vi skal køre formen op
      if (Top + Height) < Screen.WorkAreaRect.Bottom then
        begin
          Timer.Enabled := False;
          IsOpen := True;
        end
      else
        Top := Top - 5;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer.Enabled := True;
end;

end.

Hvis du har flere forms, så lav det i hver enkel - eller evt. i formens OnShow(),
Avatar billede jackass- Nybegynder
15. november 2004 - 10:53 #10
Hmm det driller lidt.. Jeg har pt:

******************
procedure TForm4.Timer1Timer(Sender: TObject);
begin
  if isOpen then
    begin
      // vi skal køre formen ned
      if (Top > Screen.WorkAreaRect.Bottom) then
        begin
          Timer1.Enabled := False;
          IsOpen := False;
          Close; // undlad denne, hvis du har en anden måde at åbne formen på igen
        end
      else
        Top := Top + 5;
    end
  else
    begin
      // vi skal køre formen op
      if (Top + Height) < Screen.WorkAreaRect.Bottom then
        begin
          Timer1.Enabled := False;
          IsOpen := True;
        end
      else
        Top := Top - 5;
    end;
end;

procedure TForm4.FormShow(Sender: TObject);
begin
  List_Drives;
  Timer1.Enabled := True;
end;
******************

Og den måde jeg "aktiverer" den på, er med et click på trayicon;

procedure TForm1.TextTrayIcon1Click(Sender: TObject);
begin
  if Form4.Active <> TRUE then
    Form4.Show;
end;

Men det der sker er når jeg trykker på ikonet at den viser Form4 fuldt og så kører/slider den så ned og lukker Form4. Men trykker jeg så igen, kører den op og bliver der - ligesom den egentlig skulle allerede første gang...?? :/
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