1 pièce(s) jointe(s)
[Linux -- gtk2] Le sablier ne peut parfois pas être affiché
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 :
Code:
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; |
mais avec un truc sophistiqué c'est mort :
Code:
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; |
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.
Pièce jointe 566025
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.