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 : 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;
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
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.
Nom : Capture.png
Affichages : 208
Taille : 18,1 Ko

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.