Cette manip ne sert à rien si l'unité de déclaration ssNone n'est pas présente dans les uses.Citation:
J’ai aussi essayé Ctrl + cliquer sur ssNone, mais rien ne se passe.
Ajoute StdCtrls dans les uses
Version imprimable
Cette manip ne sert à rien si l'unité de déclaration ssNone n'est pas présente dans les uses.Citation:
J’ai aussi essayé Ctrl + cliquer sur ssNone, mais rien ne se passe.
Ajoute StdCtrls dans les uses
ça fonctionne mais ça répond pas à mon besoin car je veux masquer le Scrollbar d'un DBCtrlgrid et non pas dbgrid
Pièce jointe 668284Code:
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 type TForm1 = class(TForm) ClientDataSet1: TClientDataSet; DataSource1: TDataSource; DBCtrlGrid1: TDBCtrlGrid; DBText1: TDBText; DBEdit1: TDBEdit; procedure FormCreate(Sender: TObject); procedure DataSource1DataChange(Sender: TObject; Field: TField); private { Déclarations privées } procedure HideScrollBars(Grid: TDBCtrlGrid); procedure DataSetAfterScroll(DataSet: TDataSet); public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.HideScrollBars(Grid: TDBCtrlGrid); begin ShowScrollBar(Grid.Handle, SB_HORZ, False); ShowScrollBar(Grid.Handle, SB_VERT, False); SetWindowLong(Grid.Handle, GWL_STYLE, GetWindowLong(Grid.Handle, GWL_STYLE) and not(WS_HSCROLL or WS_VSCROLL)); end; procedure TForm1.DataSetAfterScroll(DataSet: TDataSet); begin HideScrollBars(DBCtrlGrid1); end; procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin HideScrollBars(DBCtrlGrid1); end; procedure TForm1.FormCreate(Sender: TObject); begin DataSource1.DataSet.AfterScroll := DataSetAfterScroll; end;
Merci pour votre réponse.
Cependant, cela risque d’être compliqué.
Mon CtrlDbGrid se trouve dans la fiche T_Prod, alors que mes DataSource sont déclarés dans la fiche module F_DM.
Le private ne fonctionne pas dans ce cas, il faut les passer en public.
En plus, j’obtiens plein de messages de violation lors de la compilation.
Désolé pour tout ça 😞
Intercepter le message WM_NCCALCSIZE lancé au moment du calcul de la partie client pour l'étendre sur toute la fenêtre du contrôle
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 var OldProc: TWndMethod; procedure TForm1.NewWndProc(var Message: TMessage); var R: TRect; begin OldProc(Message); if Message.Msg = WM_NCCALCSIZE then begin R := DBCtrlGrid1.BoundsRect; TWMNCCalcSize(Message).CalcSize_Params.rgrc[0] := R; end; end; procedure TForm1.FormCreate(Sender: TObject); begin OldProc := DBCtrlGrid1.WindowProc; DBCtrlGrid1.WindowProc := NewWndProc; end;
Passer en FMX avec un Delphi récent pour profiter d'une ergonomie améliorée pour les tablettes serait peut-être à envisager pour un logiciel de caisse probablement tactile vu l'interface montrée.
Typiquement, un scroll via un glissement vertical serait idéal pour votre logiciel.
Sans parler des POS sous Windows qui sont vendus avec un logiciel intégré, standardisé facilement configurable car ce sont en réalité une application Web genre Electron
Dans un secteur concurrentiel où la carte du resto est déportée sur une borne utilisateur ou un application Mobile (QRCode pour y accèder) ... bon courage pour vendre un dinosaure en D7 qui utilise encore des boutons flèches au lieu d'un scroll par glissement !
Le menu latéral peut contenir une boucle, une fois en fin de liste, cela remet les premiers, comme une "roue" cela permet de défiler toujours vers le bas, plus simple pour l'utilisateur.
Pensez à simplifier votre interface, supprimez les cadres, faut miser sur la transparence pour le texte au plus près de l'image, voir superposer le prix en partie sur l'illustration pour gagner en place ... en gros, allez voir une borne dans un FastFood américain, vous verrez une ergonomie pensée et réfléchie.
Merci chef pour vos recommandations.
Je tiens simplement à attirer votre attention sur le fait que le logiciel est destiné au marché algérien, où de nombreux fast-foods utilisent encore des calculatrices et le papier/stylo. L’objectif est avant tout d’encourager la digitalisation — ce n’est qu’un point de départ.
À la base, je ne suis pas développeur Delphi, j’ai choisi cet outil car mon père l’utilisait beaucoup, ce qui m’a motivé à m’y intéresser.
Alors ça a marché ou pas cette proposition:
Citation:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 var OldProc: TWndMethod; procedure TForm1.NewWndProc(var Message: TMessage); var R: TRect; begin OldProc(Message); if Message.Msg = WM_NCCALCSIZE then begin R := DBCtrlGrid1.BoundsRect; TWMNCCalcSize(Message).CalcSize_Params.rgrc[0] := R; end; end; procedure TForm1.FormCreate(Sender: TObject); begin OldProc := DBCtrlGrid1.WindowProc; DBCtrlGrid1.WindowProc := NewWndProc; end;