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 :

Comment recréer entièrement un composant type tdatetimepicker?


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de korntex5
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juin 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 417
    Billets dans le blog
    1
    Par défaut Comment recréer entièrement un composant type tdatetimepicker?
    Bonjour je cherche à recréer un composant du type tdatetimepicker, et par là je jeux dire créer la petite fenêtre qui s'affiche au dessus de la form pour choisir une date, quand on clique sur le petit triangle.
    Je ne me rappelle plus comment faire cela.

  2. #2
    Membre éclairé
    Avatar de korntex5
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juin 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 417
    Billets dans le blog
    1
    Par défaut
    un tframe serait la solution non?
    mais puis-je afficher ce tframe rataché à ma combo par dessus la form?

  3. #3
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Ta question est assez vaste et on ne sait pas trop ce dont tu as besoin.
    Tu peux bien sûr utiliser un TFrame que tu rend visible sur le OnClick de ton 'triangle' après l'avoir positionné à l'endroit de ta souris.

    Mais pourquoi donc recréer un composant de type DateTimePicker ??
    Quel est ton besoin ? Où bien est ce simplement par curiosité ?

  4. #4
    Membre éclairé
    Avatar de korntex5
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juin 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 417
    Billets dans le blog
    1
    Par défaut
    le type Tdatetimepicker était à titre d'exemple.
    merci qd même.

  5. #5
    ILP
    ILP est déconnecté
    Membre éclairé
    Avatar de ILP
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2002
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 261
    Par défaut
    Si tu veux, j'ai écris une petite fonction qui permet d'afficher un TMonthCalendar dans un Frame sans bordure lors du clique sur un bouton et de remplir un TMaskEdit avec la date.

    Voici la fonction :
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    // Afficher le calendrier
    procedure Calendrier(EditDate: TMaskEdit); overload;
    var
      DateActuelle: Variant;
      X, Y: Integer;
      PositionFnt: TPoint;
    begin
    ////////////////////////////////////////////////////////////////////////////////
    // UTILISE L'UNITÉ : UDate /////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
     
      // Créer la fenêtre
      Application.CreateForm(TFDate, FDate);
     
      // Récupère la position du TEdit
      PositionFnt.X := 0;
      PositionFnt.Y := 0;
      PositionFnt := EditDate.ClientToScreen(PositionFnt);
      X := PositionFnt.X - 2;
      Y := PositionFnt.Y + EditDate.Height - 3;
     
      // Spécifie la position de la fenêtre
      FDate.Left := X;
      FDate.Top  := Y;
     
      // Spécifie la date du calendrier
      DateActuelle := VerifDate(LeftStr(EditDate.Text, 10));
      if DateActuelle = Null then
        FDate.MC_Calendrier.Date := Date()
      else
        FDate.MC_Calendrier.Date := DateActuelle;
     
      // Affiche la fenêtre
      FDate.ShowModal;
     
      // Récupère la valeur
      if FDate.ModalResult = idOk then
        EditDate.Text := DateToStr(FDate.MC_Calendrier.Date)
      else if FDate.ModalResult = idCancel then
        EditDate.Text := EditDate.Text
      else
        EditDate.Text := '';
    end;
     
    // Vérifie la date tapée et la renvoye sous forme de TDateTime
    function VerifDate(Date: String; Erreur: Boolean = True): Variant;
    var
      FormatDate: TFormatSettings;
    begin
      GetLocaleFormatSettings(1, FormatDate);
      if Length(Date) = 10 then
        FormatDate.ShortDateFormat := 'dd/MM/yyyy'
      else
      begin
        FormatDate.ShortDateFormat := 'dd/MM/yyyy hh:nn';
     
        // Vérifie si il y a une heure de saisie
        if (Length(Date) > 10) then
          if (Date[12] = ' ') and (Date[1] <> ' ') then
          begin
            Date[12] := '0';
            Date[13] := '0';
            Date[15] := '0';
            Date[16] := '0';
          end;
      end;
     
      // Configure le format de date pour la base de donnée
      if (Trim(Date) = '/  /') or (Trim(Date) = '/  /       :') or (Date = '') then
        Result := Null
      else
        try
          Result := StrToDateTime(Date, FormatDate);
        except
          on E: Exception do
          begin
            if Erreur then
              MessageDlg('Erreur lors de la vérification'
                + ' d''une date.'#13#10 + E.Message, mtWarning, 0);
            Abort;
          end;
        end;
    end;
    Et le code à mettre dans le bouton à afficher à côté du TMaskEdit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.BTN_DateClick(
      Sender: TObject);
    begin
      // Récupère la date saisie par l'utilisateur
      Calendrier(TXT_Date);
    end;
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Comment afficher entièrement le nom d'un fichier avec input type file
    Par artenis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 09/09/2011, 14h47
  2. Réponses: 6
    Dernier message: 22/01/2008, 20h40
  3. Comment appeller un ActiveX de type Exe en JAVASCRIPT ?
    Par mandarindi dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/03/2005, 10h57
  4. Comment déterminer si un composant est d'un type "TMonT
    Par DanielR dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/03/2004, 19h22
  5. Comment inserer des donnee de type Large Object !!
    Par josoft dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/07/2003, 12h21

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