Bonjour,
J'aimerais pouvoir faire comme dans Windev, écrire une procédure qui affectera tous les champs de toutes mes fenêtres.
Y a t-il un moyen de faire cela avec Lazarus ? Et si oui... comment ?
Merci
JS
Bonjour,
J'aimerais pouvoir faire comme dans Windev, écrire une procédure qui affectera tous les champs de toutes mes fenêtres.
Y a t-il un moyen de faire cela avec Lazarus ? Et si oui... comment ?
Merci
JS
Au nom du pèze, du fisc et du St Estephe
Au nom du fric, on baisse son froc...
Bonjour,
Ce n'est peut-être pas la méthode la plus élégante (d'un point de vue objet), mais voici comment vous pourriez procéder :
Je prends pour hypothèse que je veux rendre générique un événement OnClick de type TNotifyEvent.
Dans une unité, je crée un objet singleton avec une méthode de ce type (j'ignore la partie relative au singleton, je vous renvoie aux échanges que l'on peut trouver sur le sujet)
Code : Sélectionner tout - Visualiser dans une fenêtre à part TNotifyEvent = procedure(Sender: TObject) of object;
Dans les unités qui en ont besoin, on indique l'unité par un uses adéquat et on aurait:
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 interface //... type TMonObjet = class public procedure ChampClick(Sender: TObject); end; var MonObjet: TMonObjet; implementation // ... procedure TMonObjet.ChampClick(Sender: TObject); begin if Sender is TControl then ShowMessage('L''instance '+ TControl(Sender).Name + ' a déclenché l''événement "projet"...') else ShowMessage('Une instance de la classe ' + Sender.ClassName + ' a déclenché l''événement "projet"...') end; //... initialization MonObjet := TMonObjet.Create; finalization MonObjet.Free; end.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // unité 1 : TForm1 procedure TForm1.FormCreate(Sender: TObject); begin Edit1.OnClick := @MonObjet.ChampClick; CheckBox1.OnClick := @MonObjet.ChampClick; RadioButton1.OnClick := @MonObjet.ChampClick; RadioButton2.OnClick := @MonObjet.ChampClick; end;A adapter et améliorer...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // unité 2 : TForm2 procedure TForm2.FormCreate(Sender: TObject); begin Edit1.OnClick := @MonObjet.ChampClick; CheckBox1.OnClick := @MonObjet.ChampClick; Panel1.OnClick := @MonObjet.ChampClick; end;
--
Philippe.
Philippe.
D'abord, j'aimerais éviter de devoir mettre une ligne par control.
Ensuite, j'ai retrouvé un bout de code Delphi qui marchait, et qui utilisait Application.OnMessage.
Tout content, je me suis dit, "Cool, ça devrait fonctionner..." Mais
OnMessage n'existe pas dans Lazarus !
Comment puis-je faire ? Qu'est-ce qui remplace "OnMessage" dans Lazarus ?
Merci
JS
Au nom du pèze, du fisc et du St Estephe
Au nom du fric, on baisse son froc...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager