|
Bonjour Je vous propose de consulter mes liens Delphi : 100% francophones, quelques trucs et astuces |
|
|
|
|
|
Mon générateur d'état, vous pouvez l'utiliser tel quel ou l'améliorer. Pour des explications n'hésiter pas à me contacter |
||
|
|
Une Form à inclure dans votre projet pour l'impression de fichiers sans Qreport, l'utilisateur peut choisir les champs à imprimer. Si le fichier à imprimer est indexé, le fichier pourra être trié avant impression. Cet exemple permettra que comprendre l'utilisation de l'objet Canvas pour l'impression sous Delphi |
||
|
|
Ne nombreux trucs et astuces System, écran et mes recommandations pour créer très simplement une application réseau utilisant des tables |
||
|
L I E N S |
Overbyte : François Piette Home Page |
||
|
Trucs et astuces |
|
|
Ecran |
|
|
|
Forcer la mise en route de l'économiseur : PostMessage(GetDesktopWindow, WM_SYSCOMMAND, SC_SCREENSAVE, 0); Activer l'économiseur d'écran: SystemparametersInfo(SPI_SETSCREENSAVEACTIVE,1,nil,SPIF_SENDWININICHANGE); Désactiver l'économiseur d'écran SystemparametersInfo(SPI_SETSCREENSAVEACTIVE,0,nil,SPIF_SENDWININICHANGE); Connaître la résolution de l'écran Avec : var HH :HDC; LARG,HAUT:integer; HH:=getdc(GetDesktopWindow); LARG:=GetDeviceCaps(HH,HORZRES); HAUT:=GetDeviceCaps(HH,VERTRES); Changer le papier peint de windows SystemParametersInfo(SPI_SETDESKWALLPAPER,0,PChar('fichier BMP'),SPIF_SENDWININICHANGE); Changer la résolution de l'écran à l'éxécution Procedure changeresolution; Var Resolution:TDeviceMode; i:integer; Begin Resolution.dmSize := sizeof (Resolution); Resolution.dmPelsWidth := 640; (800) Resolution.dmPelsHeight := 480; (600) Resolution.dmBitsPerPel := 16; (24) Resolution.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL; I := ChangeDisplaySettings(Resolution, CDS_TEST); Case i Of DISP_CHANGE_SUCCESSFUL:Begin // Ok ChangeDisplaySettings(Resolution, 0); End; DISP_CHANGE_RESTART : Begin MessageDlg('Vous devez redémarrer l'ordinateur',mtwarning,[mbOk], 0); ChangeDisplaySettings(resolution, CDS_UPDATEREGISTRY); End; DISP_CHANGE_BADMODE, DISP_CHANGE_FAILED Begin MessageDlg(' Erreur lors du changement de résolution',mtwarning,[mbOk], 0); ChangeDisplaySettings(resolution, CDS_UPDATEREGISTRY); End; End; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
System |
|
|
|
Lancement de la fenetre de configuration de l'heure WinExec('RUNDLLl32.EXE SHELL32.DLL,Control_RunDLL timedate.cpl',SW_SHOWNORMAL); Connaitre le répertoire temporaire par défaut de windows Avec :buf::array[0..512] of Char >> GetTempPath(511,buf); Rebooter Windows ExitWindows(EW_REBOOTSYSTEM,0); Relancer Windows ExitWindows(EW_RESTARTWINDOWS,0); Commander l'ouverture du lecteur de CD Inclure unité mmsystem >Ouverture : MciSendString('Set CDAUDIO DOOR OPEN WAIT', NILl, 0, handle);>Fermeture : MciSendString('Set CDAUDIO DOOR CLOSED WAIT', NIL, 0, handle); Chemin du répertoire Windows Avec : path : array[0.255] of char; > GetWindowsDirectory(Path,255);
Avec : path : array[0.255] of char; > GetSystemDirectory(Path,255);Supprimer la barre de tache pendant le déroulement d'un programme Avec: BarreTache : HWND; dans les declarations de variable de la forme procedure TForm1.FormCreate(Sender: TObject); begin BarreTache := FindWindow('Shell_TrayWnd', NIL); ShowWindow(BarreTache, SW_HIDE); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin ShowWindow(BarreTache, SW_SHOW); End; Exécuter un fichier son Wav Inclure unité mmsystem Sndplaysound(pchar('exemple.wav'),SND_ASYNC+SND_NOSTOP) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Créer très simplement une application réseau utilisant des tables |
|
|
|
Voici mes recommandations 1- Répertoire partagé : Regrouper toutes les tables dans un module de données .Ne pas associer de composant DataBase aux tables A l événement OnCreate du module de donnée mettre la propriété DatabaseName de toutes les table =au chemin du répertoire partagé. Effectuer avant tout le test If directoryExist( ) pour savoir si la base de donnée est accessible Le chemin du répertoire partagé sera modifiable dans un module 'Connexion' et sauvegarder dans un fichier Ini ou autre 2- Pour que les changement apportées aux tables apparaissent simultanément et soient connues de toutes les stations du réseau A l'état normal, les modifications apportées aux tables ne seront pas visibles en direct sur chaque station avec risque de pertes de données etc.. Il faut sur chaque station du réseau paramètrer le système de façon suivante: Avec L'administrateur BDE : Onglet Configuration : Icône System; Icône Init: mettre local share à TRUE 3- Rafraîchissement des données Les données modifiées seront réellement visibles sur toutes les stations après un rafraîchissement des tables modifiées Pour cela : disposer un Timer dans le module de données, à l'événement OnTimer, rafraîchissez toutes les tables partagées par la méthode : Table.Refresh , Le temps de rafraîchissement pourra être paramètré dans le module Connexion et sauvegarder dans un fichier Ini. 4- Eviter les problèmes lorsque vous modifier une table et que le rafraîchissement est activé, le champ modifié est à chaque fois initialiser à sa dernière valeur, pour éviter ce problème, ne jamais modifier une table dans un dbgrid, rassembler les champs modifiables dans une fiche et désactiver le rafraîchissement à l'événement OnActivate de la fiche puis restaurer le rafraîchissement à l'événement OnClose de la fiche. Pour ne pas surcharger l'échange de données entre le serveur de données et les station, le taux de rafraîchissement doit être au moin égal à 1,5 seconde par nombre de station du réseau utilisant la base données, ne rafraîchir que les tables partagées dont le contenu est critique. |
|
|
Sauvegarder la position des colonnes et la personnalisation du DbGrid Sauvegarder : Dbgrid.Columns.SaveToFile(GetCurrentdir+'\nomdefichier'); Charger : Dbgrid.Columns.LoadFromFile(GetCurrentdir+'\nomdefichier'); |