IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

[FAQ] [Défi] Amélioration d'un TMainMenu


Sujet :

Composants VCL Delphi

  1. #41
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    ah bin j'avait pas compris ca moi
    j'avait cru qu'i voulait un bouton sur chaque onglet et que sur celui-ci
    il y ai la croix [X] comme pour une fenetre
    et lors du click sur la croix on verifie si il est possible de fermer la fenetre
    me serait fourfoyé ?

    @+ Phil

    PS : pour l'affichage je l'ai en parti resolue
    voici un debut pour faire avance le shmilblick

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    procedure GradientFillRect(Canvas: TCanvas; Rect: TRect; BeginClr, EndClr: TColor);
    var
      ColorRect     : TRect;
      Height, Width : Integer;
      FromR, FromG, FromB : Integer;
      DiffR, DiffG, DiffB : Integer;
      R, G, B : Byte;
      I             : Integer;
    begin
      FromR := GetRValue(BeginClr);
      FromG := GetGValue(BeginClr);
      FromB := GetBValue(BeginClr);
     
      DiffR := GetRValue(EndClr) - FromR;
      DiffG := GetGValue(EndClr) - FromG;
      DiffB := GetBValue(EndClr) - FromB;
     
      Height := Rect.Bottom-Rect.Top;
      Width  := Rect.Right-Rect.Left;
     
      ColorRect.Top:= Rect.Top;
      ColorRect.Bottom := Rect.Bottom;
      for I := 0 to 255 do
      begin
        ColorRect.Left := Rect.Left + Muldv(I  ,Width, 256);
        ColorRect.Right:= Rect.Left + Muldv(I+1,Width, 256);
        R := FromR + Muldv(I, DiffR, 255);
        G := FromG + Muldv(I, DiffG, 255);
        B := FromB + Muldv(I, DiffB, 255);
        Canvas.Brush.Color := RGB(R, G, B);   
        Canvas.FillRect(ColorRect);           
      end;
    end;
     
    procedure DrawEclTab(GradientFil : boolean;Canvas: TCanvas; R: TRect; S: String; Index : integer; Images : TImageList; TabColordeb,TabColorfin : TColor);
    const
        D = 5;
    var
      H: HRgn;
      PrevMode  : Integer;
    begin
      with Canvas do
      begin
        brush.Color := TabColordeb;
        Pen.Color := clWhite;
        pen.Width := 3;
     
        H := CreateRectRgn(R.Left, R.Top, R.Right, R.Bottom);
        SelectClipRgn(Handle, H);
        RoundRect(R.Left, R.Top, R.Right, R.Bottom + 50, D, D);
        SelectClipRgn(Handle, 0);
        DeleteObject(H);
     
        Pen.Color := clgray;
        OffsetRect(R, 1, 1);
        H := CreateRectRgn(R.Right -D div 2, R.Top, R.Right, R.Bottom);
        SelectClipRgn(Handle, H);
        RoundRect(R.Left, R.Top, R.Right, R.Bottom + 50, D, D);
        SelectClipRgn(Handle, 0);
        DeleteObject(H);
        InflateRect(R, -2, -2);
        if GradientFil Then
          GradientFillRect(Canvas,R,TabColordeb,TabColorFin);
        PrevMode := SetBkMode(handle, TRANSPARENT);
        DrawText(handle,Pchar(S),Length(S),R,DT_CENTER or DT_VCENTER or DT_SINGLELINE);
        SetBkMode(handle, PrevMode);
        if assigned(Images) Then
          Images.Draw(Canvas,R.Left + 4,R.Top,Index);
      end;
    end;
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  2. #42
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par anapurna
    salut

    ah bin j'avait pas compris ca moi
    j'avait cru qu'i voulait un bouton sur chaque onglet et que sur celui-ci
    il y ai la croix [X] comme pour une fenetre
    et lors du click sur la croix on verifie si il est possible de fermer la fenetre
    me serait fourfoyé ?
    Non, non, c'est toi qui as surement raison
    Cependant, mon "truc" devrait pouvoir marcher aussi dans ce cas

    Clic sur le bouton -- et hop ! --> ClosePage
    Bidouilleuse Delphi

  3. #43
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Citation Envoyé par anapurna
    ah bin j'avait pas compris ca moi
    j'avait cru qu'i voulait un bouton sur chaque onglet et que sur celui-ci
    il y ai la croix [X] comme pour une fenetre
    et lors du click sur la croix on verifie si il est possible de fermer la fenetre
    me serait fourfoyé ?
    Pas du tout . En fait, l'interêt de créer un tel évènement pour un TPageControl est de pouvoir l'utiliser pour remplacer une application MDI.
    Chaque onglet représente les fichiers ouverts. Si on tente d'en fermer un et qu'il a été modifié, OnCanClose permettra d'afficher le messages "Voulez-vous enregistrer les modifications Oui/Non/Annuler".
    @waskol: si on surcharge toutes les méthodes (en interceptant les messages windows en surchargeant WndProc par exemple: les évènements sont TCM_INSERTITEM, TCM_DELETEITEM et TCM_DELATEALLITEMS) on peut détruire des pages "à la main"
    Effectivement, j'avais bien pensé à une méthode "gentille" qui ferait ça mais je trouve que ça fait "bricolage"...
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

Discussions similaires

  1. [Customer Portal] FAQ améliorée avec Salesforce.
    Par Tiffado dans le forum Salesforce.com
    Réponses: 7
    Dernier message: 16/05/2012, 14h19
  2. [CSS] [FAQ] Améliorer la qualité du rendu des images strechées
    Par FremyCompany dans le forum Contribuez
    Réponses: 0
    Dernier message: 21/05/2007, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo