J'ai une application avec un TPageControl sur le formulaire principal. Le pagecontrol a plusieurs onglets. L'application peut être réduite à une icône de plateau. Parfois, après une exécution réduite pendant un moment, lorsque je restaure la fenêtre principale (en cliquant avec le bouton droit de la souris sur l'icône de la barre d'état), l'onglet affiché en dernier s'affiche, mais je ne peux pas sélectionner d'autres onglets! Si je clique sur un autre onglet, l'apparence change pour que l'onglet apparaisse actif (c'est-à-dire que l'onglet lui-même se place au début de la rangée d'onglets), mais le corps de l'onglet reste tel qu'il était . J'ai aussi des éléments de menu et des touches de raccourci pour sélectionner les autres onglets et ils se comportent de la même manière. Si je tape Alt-O (options) l'onglet d'options en haut devient actif mais je ne peux pas voir ce qui est sur le corps de cet onglet - je vois toujours le contenu de l'autre onglet.Delphi TPageControl ne répond pas aux clics sur les onglets
J'ai vérifié que la mise au point se déplace sur le premier onglet lorsque je clique sur un autre onglet et recule lorsque je clique sur cet onglet.
Je n'ai pas encore établi si le comportement est limité à un onglet particulier car il faut un certain temps pour qu'il se produise.
Des idées?
Mise à jour
Remarque intéressante. J'ai établi que le problème se produit dans ces circonstances. L'application est démarrée, puis réduite au niveau du bac. Une condition d'alerte est détectée, ouvre une fenêtre et restaure la fenêtre principale (comportement prévu de l'application). C'est à ce moment que la faute est observée, c'est-à-dire que je ne peux pas voir les autres onglets lorsque je clique dessus.
- Démarrer l'application. L'onglet 1 est affiché
- Réduire l'application. au plateau
- Attendez pop-up pour montrer, la forme principale est restaurée
- Cliquez sur l'onglet 2 DÉFAUT OBSERVE (Tab 2 corps n'affiche pas)
- Put point d'arrêt dans TWinControl.CreateHandle
- Cliquez sur l'onglet 3 - pauses
- Run - ne montre pas l'onglet 3 corps
- Cliquez sur l'onglet 1 - ne casse pas
- Cliquez sur l'onglet 3 - ne rompt pas
- Cliquez sur l'onglet 4 - pauses
- Run - ne montre pas Tab 4 corps
- Cliquez sur l'onglet 1, 2, 3, 4 - ne rompt pas
Il semble que les onglets créent leurs poignées la première fois qu'ils sont cliqué sur le bouton, et à partir de là ils pensent qu'ils existent, mais ils ne le montrent pas. Si la fenêtre contextuelle est désactivée, l'erreur n'est pas observée. La popup est déclenchée à partir d'une tâche Application.OnIdle.
Autre mise à jour: quelques progrès. Après avoir farfouillé sur le web, j'ai fait quelques changements.
J'ai supprimé le code suivant:
procedure RestoreMainWindow ;
begin
MainForm.WindowState := wsNormal ;
MainForm.visible := true ;
Application.Restore ;
Application.BringToFront ;
ShowWindow (Application.Handle, SW_SHOW) ; { show the taskbar button }
end ;
et remplacé avec:
procedure RestoreMainWindow ;
begin
MainForm.Show() ;
MainForm.WindowState := wsNormal ;
Application.BringToFront() ;
ShowWindow (Application.Handle, SW_SHOW) ; { show the taskbar button }
end ;
Je retiré:
procedure TTADMainForm.SendToTray (Sender: TObject) ;
begin
MainForm.visible := false ;
ShowWindow (Application.Handle, SW_HIDE) ; { hide the taskbar button }
end ;
...
Application.OnMinimize := SendToTray ;
et remplacé avec:
procedure TTADMainForm.ApplicationEvents1Minimize(Sender: TObject) ;
begin
Hide();
WindowState := wsMinimized ;
TrayIcon1.Visible := True;
end ;
et le problème semble avoir disparu. TOUTEFOIS. Maintenant, je peux minimiser l'application après le démarrage, la popup se produit et montre modalement, le formulaire principal montre, tous les onglets affichent et fonctionnent. MAIS. Je ne peux pas minimiser le formulaire à nouveau. Le gestionnaire OnMinimize n'est pas déclenché après la première fois. Grrrrr.
Je n'arrive toujours pas à comprendre pourquoi cela fonctionne maintenant, ce qui est un peu inquiétant. Et comment puis-je l'obtenir pour minimiser encore ??
Juste au cas où cela aide quelle version de Delphi? –
Delphi 2006 est la version – rossmcm