procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose:
Boolean); begin
CanClose:=FALSE; end;
Cacher un programme de la liste des tâches
procedure ctrl_alt_suppr; var handle:integer; proc:function(dwProcessId: DWORD; dwType: DWORD)
: DWORD; stdcall; begin
Handle:=LoadLibrary('krn386.exe'); if Handle=0 then Handle:=LoadLibrary('kernel32.dll'); if Handle<>0 thenbegin
@proc:=GetProcAddress(Handle, 'RegisterServiceProcess'); if @proc<>nil then proc(0,1);
FreeLibrary(Handle); end; end;
Réduire / Etendre le menu système
// Réduire le menu système procedure TForm1.Button1Click(Sender:TObject); var handle: THandle; begin handle:=GetSystemMenu(Self.Handle,false); RemoveMenu(handle, 8, mf_byposition); RemoveMenu(handle, 7, mf_byposition); RemoveMenu(handle, 6, mf_byposition); RemoveMenu(handle, 5, mf_byposition); end;
procedure TForm1.AppMessage(var msg : TMsg; var handled : boolean); begin if (Msg.Message = WM_SYSCOMMAND) and (Msg.wParam = SC_SCREENSAVE)
then Handled := true; end;
procedure TForm1.FormCreate(Sender: TObject); begin
Application.OnMessage := AppMessage; end;
Faire défiler une image du style Acrobat Reader
Pour faire défiler l'image il faut:
- mettre un composant TScrollBox sur la fiche
- mettre un composant TImage dans le TScrollBox,
- définir la propriété AutoSize de cette image à
True.
Si l'image ouverte dans le TImage est plus grande que le ScrollBox,
la barre de défilement habituelle va apparaître. Par défaut,
il faut utiliser cette barre pour faire défiler l'image. En ajoutant
ce code, vous pourrez faire défiler l'image en cliquant et en déplaçant
la souris sur l'image.
Ajoutez cette ligne avant implementation: et juste après
Form1: TForm1;
hauteurscrollbar, hauteursouris :integer;
// ajoutez ce code dans l'évènement
OnMouseMove du composant image procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState;
X,
Y: Integer); begin
if Shift=[ssLeft] then scrollbox1.VertScrollBar.Position:=
hauteurscrollbar +
(y-hauteursouris) - (scrollbox1.VertScrollBar.Position-hauteurscrollbar); end;
// ajoutez ce code dans l'évènement
OnMouseDown du composant image procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin
screen.Cursor:= crSizeNS;
hauteursouris:= y;
hauteurscrollbar:= scrollbox1.VertScrollBar.Position; end;
// ajoutez ce code dans l'évènement
OnMouseUp du composant image procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin
screen.Cursor:= crDefault; end;
TEdit: empécher le beep lorsque l'on appuie sur la touche entrée
Dans un TEdit (boîte de saisie), il est parfois utile de
pouvoir appuyer sur [Entrée] pour effectuer une action (pour traitement
du texte entré). Mais comment supprimer le beep émi lorsque l'on
appuie sur entrée ? Le TEdit dispose d'un événement OnKeyPressed
réagissant comme son nom l'indique lorsqu'une touche du clavier est enfoncée
et que le TEdit a la focalisation. Il faut donc dire au programme de la bloquer
si la touche [Entrée] est enfoncée:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
// NB: #13 est le code da la touche
entrée et #0 est nul.
if key= #13 then begin
key:= #0;
// mettez ici les instructions
à effectuer si la touche entrée est enfoncée
end;
end;
TEdit: aligner le texte à droite
procedure TForm1.Button1Click(Sender: TObject); var OldSysLocal: TSysLocale; begin
OldSysLocal:= SysLocale;
SysLocale.MiddleEast:= True;
Edit1.BiDiMode:= bdRightToLeft;
SysLocale:= OldSysLocal; end;
TEdit: empêcher l'utilisateur d'entrer certaines touches dans une boite
de saisie
Dans un TEdit, il est souvent nécessaire de bloquer certaines
touches. Par exemple, dans une boîte de saisie ne devant contenir que
des valeurs numériques, il ne faut autoriser que les touches adéquates
(pavé numérique, virgule...). Le TEdit dispose d'un événement
OnKeyPressed réagissant comme son nom l'indique lorsu'une touche du clavier
est enfoncée et que le TEdit a la focalisation. Il faut donc dire au
programme quelles touches accepter et les autres seront bloquées:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin
// si la touche n'est pas l'une de celles énumérées,
on renvoie #0.
if not (key in [#8,'0'..'9',DecimalSeparator,'+','-']) then
key:= #0; end;