LES TRUCS & ASTUCES |
Dirscan Une récursivité pour scruter
votre disque (536 Octets)
Director Création d'un répertoire (2 487 Octets)
![]()
Une
fonction pour calculer le jour de Pâques
Utiliser
un curseur personnalisé
Contrôles de saisie au clavier
Scanner
les programmes en cours d'exécution
Position
du curseur dans un Memo
Connaitre
le nombre de sous répertoire d'un répertoire
Copier
un fichier
Convertir le code couleur Hexa de Delphi
en code couleur HTML
Où
ce trouve le répertoire temporaire ?
Connaitre le répertoire parent
Une fiche ovale
Figer la première colonne d'une grid
OLE
avec Word
Restez
dans le droit chemin
Créer
un lien Hypertexte dans un label
Afficher les rows d'un DBgrid sur 2
couleurs
Sélection sur une
recherche du texte non saisie
Cacher le bouton de
la barre des taches
Ajouter
dynamiquement un élément à un menu
Formater une disquette
![]()
Ajouter dans le uses ToolsHelp: Procedure scanprog; var taskInfo : TTaskEntry; begin taskInfo.dwSize:=sizeof(taskInfo); if TaskFirst(@taskInfo) and (autorise) then repeat Listbox.item.add(taskInfo); until (not TaskNext(@taskInfo)); end; |
|
Une méthode pour récupérer le
n° de ligne et de colonne du curseur :Var line,col : integer; Begin line:=SendMessage(Memo1.Handle,EM_LineFromChar,Memo1.SelStart,0); col:=Memo1.SelStart - SendMessage(Memo1.Handle,EM_LineIndex,line,0); end; |
|
1) Se positionner sur le champ
suivant avec la touche entrer dans l'événement
OnKeyDown ajoutezif key = VK_RETURN then perform(WM_NEXTDLGCTL,0,0); 2) Modifier le séparateur de décimale à la volée dans l'événement OnKeyPress ajoutez if key ='.' then key :=','; |
|
| Il faut créer un fichier
ressource (avec imageEditor) dans lequel vous il y a le
dessin du Curseur perso Ajouter {$R tonfichier.RES} dans le source du programme Déclarer une constante curseur unique (pas celles utilisées par Delphi) par exemple crMonCurseur = 1; En fin d'unité : ScreenCursors[crMonCurseur]:=LoadCurseur(hInstance,'NOMDUCURSEUR'); il reste plus
qu'a affecter le nouveau curseur. exemple:
TLabel.Cursor:=crMonCurseur; |
|
Function Paques(Y:Integer) : TDateTime; Var C,n,k,i,j,l,m,d :Integer; Begin C:=Y div 100; N:=Y mod 19; K:=(C-17) div 25; I:=(C - C div 4 - (C-K) div 3 + 19*N + 15) mod 30; I:=I - (I div 28) * (1-( I div 28) * (29 div (I+1))*((21-N) div 11)); J:=(Y + Y div 4 + I + 2 - C + C div 4) mod 7; L:=I -J; M:=3 + (L+40) div 44; D:=L + 28 - 31 * (M div 4); result:=EncodeDate(Y,M,D); end; Pour l'Ascension ajouter 39 jours et la Pentecôte ajouter 49 jours. |
|
Voici une Fonction qui compte le
nombre de répertoire. function Dir_CountDir(strPathName: String;bRecurseDir : Boolean):Integer; var strTempPath : string; nCount : integer; hFindFile : THandle; FindData : TWin32FindData; Begin nCount := 0; Result := 0; strTempPath := strPathName+'\*.*'; hFindFile := Windows.FindFirstFile(PChar(strTempPath),FindData); if hFindFile = INVALID_HANDLE_VALUE then Exit; repeat if (IsChildDir(FindData)) then begin nCount := nCount+1; if bRecurseDir then begin strTempPath := strPathName+'\'+FindData.cFileName; nCount := nCount+Dir_CountDir(strTempPath,bRecurseDir); end; end; until (not Windows.FindNextFile(hFindFile,FindData)); Windows.FindClose(hFindFile); Result := nCount; end; function IsChildDir (var lpFindData : TWin32FindData) : Boolean; var b : boolean; begin Result := ((lpFindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <>0); b := (lpFindData.cFileName[0] <> '.'); Result := (Result and b); end; |
|
Voici une fonction qui permet la
copie d'un fichier source vers un fichier de destination
|
|
| function
TColorToHex( Color : TColor ): string; begin Result := { red value } IntToHex( GetRValue( Color ), 2 ) + { green value } IntToHex( GetGValue( Color ), 2 ) + { blue value } IntToHex( GetBValue( Color ), 2 ); end; {exemple d'appel avec une ColorDialog} procedure TForm1.ToolButton2Click(Sender: TObject); var s : String; begin if ColorDialog1.Execute then s := TColorToHex(ColorDialog1.Color);{par exemple} ShowMessage(s); end; |
|
Cet algo fait appel à une fonction API "GETTEMPPATH" function TForm1.GetTempDirectory: String; var DossierTemp: array[0..255] of Char; begin result:=''; if GetTempPath(255, @DossierTemp)<>0 then Result := StrPas(DossierTemp); end; |
|
procedure TForm1.Button1Click(Sender: TObject); var monrep : string; i : integer; begin MonRep:=extractfilepath(application.exename); For i := Length(MonRep) downTo 1 Do If MonRep[i] = '\' Then Begin showmessage(Copy(MonRep, 1, Pred(i))); exit; End; end; |
|
| Dans le oncreate de votre Form inserez "SetWindowRgn(handle,CreateEllipticRgn(0,0,width,height),true);" | |
procedure TFiche_generale.FormCreate(Sender: TObject);
{à la création de la fenêtre principale}
var TDAG : TDBGrid;
begin
TDAG := DBGrid1; {remplacer DBGrid1 par le nom de la grille concernée}
TDrawGrid(TDAG).FixedCols :=2;
TDAG.Refresh;
end;
|
|
Comment garnir un tableau Word
avec le résultat d'un Query ?
|
|
Si vous désirez récupérer le CHEMIN (Path) de votre programme EXECUTABLE voici comment procéder. C'est pas du neuf, mais ça peut toujours aider... Var Path : String; // VAR Contenant le chemin vers l'executable Name : String; // VAR Contenant le Nom de l'executable Chemin : String; // VAR Contenant le Chemin Complet Begin // On recupere le Chemin et le Nom de l'executable (Chemin+Nom.EXE) Path := (ExtractFilePath(Application.ExeName)); Name := (ExtractFileName(Application.ExeName)); Chemin := (Path + Name); end; |
|
Vous desirez
mettre un lien Hypertexte de votre Email ou votre site
Web dans une boite A propos: Exemple de lien vers un site : procedure TForm1.Label1Click(Sender: TObject); Var S : String; begin S:='http://perso.club-internet.fr/fifi62/index.htm'; ShellExecute(GetDesktopWindow(), 'open', PChar(S), nil, nil, SW_SHOWNORMAL); end; Exemple de lien vers un Email : procedure TForm1.Label2Click(Sender: TObject); var S : String; begin s:='mailto:fifi62@club-internet.fr'; ShellExecute(GetDesktopWindow(), 'open',PChar(s), nil, nil, SW_SHOWNORMAL); end; |
|
Dans l'évennement OnDrawColumnCell de votre DBGrid: procedure TForm1.dbgrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var i:integer; begin if ((Table1.RecNo mod 2)=0) then begin dbgrid1.Canvas.Brush.Color := claqua; dbgrid1.Canvas.Font.Color := clblack; for i:=0 to dbgrid1.Columns.Count-1 do dbgrid1.DefaultDrawColumnCell(rect, i, column, state); end; dbgrid1.DefaultDrawColumnCell(rect, Datacol, column, state); end; |
|
| Donnez un effet sur vos champ de
recherche Dans l'evennement OnChange du champ:
|
|
| Normalement, chaque programme sous
windows possède un bouton correspondant dans le la barre des taches. Pour cacher ce bouton voici une methode fonctionnat dans delphi 2.0 et 3.0 : Il suffit tout simplement de rajouter dans la methode OnCreate de votre fenetre (TForm) principale, la ligne suivante: SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW) |
|
| {Dans ta procédure qui déclenche
l'ajout d'un élément du menu} var element: TMenuItem; begin element := TMenuItem.Create(Self); element.onclick := testClick; {attribution d'un évennement créé au préalable (procedure testClick(Sender : TObject) ;)} element.Caption := 'élément';{Attribution d'un titre du menu} Monmenu.Add(element); end; |
|
Exemple
d'utilisation de la boite de bialogue de formatage d'un
disque (API Shell32.dll)
|
|