Bonjour,
Le marronnier du sablier : il m'est parfois impossible de changer l'image du pointeur de ma souris en sablier (ou autre), un grand classique.
Ou plutôt, un truc tout bête fonctionne :
mais avec un truc sophistiqué c'est mort :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TForm1.Button1Click(Sender: TObject); begin Screen.Cursor:=crHourGlass;// ok Application.ProcessMessages; OpenDialog1.Execute Screen.Cursor := crDefault; end;
Ci-dessous une magnifique capture d'écran où j'ai activé la présence du pointeur, en plein milieu de la trace laissée par l'OpenDialog.
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 procedure TForm1.Button1Click(Sender: TObject); begin if not OpenDialog1.execute then exit; stream := Bass_StreamCreateFile(False, pChar(od.filename), 0, 0, BASS_STREAM_DECODE); // Make a decoding stream // Decode the sample data, without playing it. Use BASS_ChannelGetData to retrieve decoded sample data. if stream = 0 then begin // testé ok Error('Error creating stream for ' + OpenDialog1.FileName); Exit; end; BASSChannelGetLength := BASS_ChannelGetLength(stream, BASS_POS_BYTE); if BASSChannelGetLength = QW_ERROR then begin // testé ok Error('Error getting length of ' + OpenDialog1.FileName); Exit; end; Screen.Cursor:=crHourGlass; // jamais vu le sablier Application.ProcessMessages; Splitter1Moved(Self); GetDataAndShowBmps; Screen.Cursor := crDefault; end;
Bien sûr j'ai googlé, mais comm' d'hab', ça ne paye pas pour ce genre de problème : j'ai même vu un post qui disait que si l'exemple des curseurs (fourni avec Laz [version\examples\cursors]) fonctionnait, alors le problème était dans mon camp. OK, mais où ?
Et le gag (car, oui, il y en a un), c'est que mon code fonctionne si je valide la boîte de dialogue de l'OpenDialog avec la touche ENTER !
Mais si je clique à la souris sur "Ouvrir", c'est mort.
Une idée, quelqu'un ?
Linux 32 bits, Lazarus (encore et toujours) 1.4, gtk2.8.
Partager