Results 1 to 9 of 9

Thread: Popup melding

  1. #1

    Popup melding

    Dames en heren,
    Bestaat het volgende:

    Een popup melding, met een instelbare tekst op en gekleurd vlak.
    Deze popup verdwijnt ma 0.5 seconden door langzaam de Opacity terug te schroeven. (ook totaal bv 0.5 s)

    Het leek me dat sit er al moest zijn, maar heb niet kunnen vinden. Het bouwen lek me ook mogelijk, maar het lukt me niet .

    Groet

  2. #2
    TJvDesktopAlert van JVCL (Jedi)




  3. #3
    Dank je wel Rik, Heb er al naar gekeken, maar nog niet geïnstalleerd.
    Maar gaat dit ook werken op een smartphone ? (dat is namelijk wel mijn bedoeling)

  4. #4
    Nee, ik geloof wel dat JVCL componenten heeft voor FMX maar ik denk niet dat deze er één van is.

    Een popup die jij beschrijft heb ik ook nog nooit gezien op een mobiel. Wel de standaard notification-auto-dropdown. Ik denk dat je daar dan ook de oplossing moet zoeken voor een mobiel.

  5. #5
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,703
    Quote Originally Posted by InfoMuis View Post
    Maar gaat dit ook werken op een smartphone ?
    Dat denk ik niet; Jedi is een typische Windows (VCL) componenten-set.
    Er zijn enkele zaken omgezet naar Kylix/CLX, maar ik vrees dat je pech hebt.
    TMemoryLeak.Create(Nil);

  6. #6
    Ik denk dus dat je naar deze standaard notificatie moet kijken:
    http://docwiki.embarcadero.com/RADSt...S_and_Android)

  7. #7
    Dank voor al info.
    de klant wil het volgende. in een aantal schermen zit de standaard balk om voor new-record, opslaan record, volgende, vorige enz.
    Als er op opslaan wordt gedrukt 'moet' er een korte pupup komen. (moet is een beetje te, met wil, en ik zie dat dan weer als een uitdaging, omdat ik wel idee heb hoed ik het wel)

    een popup door een door mij te bepalen plaats
    die popup staat voor 0.5 s (instelwaar)
    dan vervaagt hij in 0.5 s tot hij weg is. (instelbaar)

    Ben inmiddels ene heel eind, Hoet bovenstaande heb ik, alleen het Free geven an de objecten is een probleem. Op de smartphone kan dit via ARC, maar onder windows niet, en ik wil ook dat het daar werkt.
    Zal de code tot nu toe hier later even neerzetten

  8. #8
    Quote Originally Posted by InfoMuis View Post
    ... alleen het Free geven an de objecten is een probleem. Op de smartphone kan dit via ARC, maar onder windows niet, en ik wil ook dat het daar werkt.
    In FMX moet je geen .Free maar .DisposeOf gebruiken.
    Voor Windows wordt er in .DisposeOf automatisch een .Free gedaan dus dan werkt het automatisch voor Windows en Android/iOS.

  9. #9
    Het is gelukt: De code:

    Code:
    unit popup;
    
    interface
    
    uses  FMX.Forms, FMX.Types, FMX.StdCtrls, System.Classes, System.Types,  FMX.Objects, FMX.Graphics,  system.UITypes, System.SysUtils, System.Threading
    ;
    
    type
    
      TTimedPopup = class
    
      private
        Form : TForm;
    
       lTb: TLabel;
      lImg: TImage;
    
      left, top: integer;
      height, width: integer;
      tekst :string;
        procedure ShowReal;
    
    
      public
        constructor Create(AOwner: TComponent);
        destructor Destroy; override;
        procedure SetPositionSize(pHight:integer; pWidth:integer; pLeft:integer=-1; pTop:integer=-1) ;
        procedure SetLabel( pLabel :String) ;
        procedure Show;
      end;
    
    
      procedure doen(AOwner: TComponent; pHight:integer; pWidth:integer; pLabel:string; pLeft:integer=-1; pTop:integer=-1);
    
    implementation
    
    //uses FMX.DialogService.Sync;
    
    procedure doen(AOwner: TComponent; pHight:integer; pWidth:integer; pLabel:string; pLeft:integer=-1; pTop:integer=-1);
    var ff : TTimedPopup;
    begin
        ff := TTimedPopup.Create(AOwner);
        try
          ff.SetPositionSize( pHight, pWidth, pLeft, pTop);
          ff.SetLabel(pLabel);
          ff.show;
    
        finally
         ff.free
        end;
    
    end;
    
    
    constructor TTimedPopup.Create(AOwner: TComponent);
    var lR : tRect;
      iX: Integer;
      iY: Integer;
    //  xBitmapData: TBitmapData;
    
    begin
      Form := tForm.CreateNew(AOwner);
    
       SetPositionSize(50,180);
    
       tekst := 'label';
    
    
      lTb := TLabel.Create(AOwner);
      lImg := TImage.Create(AOwner);
    end;
    
    
    procedure ImgInitP(xImg:TImage; xCl:TAlphaColor);
    
    begin
     // xImg.Bitmap := TBitmap.Create;
      xImg.Bitmap.SetSize(Round(xImg.Width), Round(xImg.Height));
      xImg.Bitmap.Canvas.Fill.Color := xCl;
      xImg.Bitmap.Canvas.BeginScene;
    
      try
        xImg.Bitmap.Canvas.FillRect(TRectF.Create(xImg.ClipRect),4,4, AllCorners ,1);
      finally
        xImg.Bitmap.Canvas.EndScene;
      end;
    end;
    
    
    procedure TTimedPopup.SetPositionSize(pHight:integer; pWidth:integer; pLeft:integer=-1; pTop:integer=-1) ;
    
    begin
      Height := pHight;
      Width := pWidth;
    
    
    
    {$IFDEF  MSWINDOWS }
      left := pLeft;
      top := pTop;
    
      if pLeft <0 then
        left :=   round((Screen.ActiveForm.Width-Width)/2)+Screen.ActiveForm.Left;
    
      if pTop <0  then
        top := round((screen.ActiveForm.Height-height)/2) + Screen.ActiveForm.Top;
    
      form.Left := left; form.Top := top;
      form.Width := Width; form.Height := Height;
      Form.BorderStyle:= TFmxFormBorderStyle.None;
    // TDialogServiceSync.ShowMessage (Screen.ActiveForm.left.ToString+' '+Screen.ActiveForm.Top.ToString);
    
    {$ENDIF}
      Form.Transparency := true;
    
    end;
    
    procedure TTimedPopup.SetLabel( pLabel :String) ;
    begin
     tekst := pLabel;
    end;
    
    procedure TTimedPopup.show;
    begin
    
      lImg.Width := Width;
      lImg.Height := Height;
      lImg.Parent := form;
    
      lImg.Align :=  TAlignLayout.Center;
    
      lTb.Parent := lImg;
      ImgInitP(lImg,TAlphaColors.Lightgrey);
    
    //
    //  form.Position:= TFormPosition.Designed;
    
    //  Form.Kind := TBrushKind.Bitmap ;
    
    
    
         lTb.Text := tekst;
        lTb.StyledSettings:=lTb.StyledSettings -[TStyledSetting.ssFamily,TStyledSetting.ssSize]    ;
        lTb.Font.Size := 20;
        lTb.Align :=   TAlignLayout.Center;
        lTb.TextSettings.HorzAlign :=   TTextAlign.Center  ;
        showReal;
    end;
    
    
    procedure tTimedPopup.ShowReal;
    var  lTasksAction : array of ITask;
    begin
      lImg.Opacity:=  1;
      //TDialogServiceSync.ShowMessage (form.left.ToString+' '+form.Top.ToString);
      form.Show;
      Setlength (lTasksAction ,1);
      lTb.Text := tekst;
        lTasksAction[0] := TTask.Create( procedure
                    var i: integer;
                    begin
                    sleep(150);
                    for i := 1 to 10 do
                      begin
    
                       sleep(20);
    
                             TThread.Queue(nil, procedure
                                                      begin
    
                                                        lImg.Opacity:=  lImg.Opacity - 0.1;
                                                      end);
    
                       end;
                             TThread.Queue(nil, procedure
                                                      begin
                                                          lTb.Free;
                                                          lTb := nil;
                                                      end);
    
    
                    end );
         lTasksAction[0].Start;
         while Assigned(lTb) do           //wachten
             Application.ProcessMessages;
         Form.Close();
    
    end;
    
    destructor TTimedPopup.Destroy;
    begin
      lImg.Free;
      form.Free;
      inherited Destroy;
    end;
    
    
    end.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •