Bir CHM yardım dosyasına sahip bir Delphi 2006 uygulamasına sahibim. Her şey tamam çalışıyor, ancak TOpenDialog ve TSaveDialog'daki "Yardım" düğmesine bağlanmak için herhangi bir yardım alamıyorum.Delphi İçeriğe duyarlı yardımı açıp iletişim kutularında çalışamıyorum
Bunu gösteren basit bir program aşağıda gösterilmiştir. 2 nolu tuşa tıklayarak yardım dosyasını açar ve doğru sayfayı gösterir. 1 nolu butona tıklamak diyaloğu açar, ancak diyalogdaki yardım butonunu tıklayarak hiçbir etkisi olmaz.
unit Unit22;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
HTMLHelpViewer ;
type
TForm22 = class(TForm)
OpenDialog1: TOpenDialog;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form22: TForm22;
implementation
{$R *.dfm}
procedure TForm22.Button1Click(Sender: TObject);
begin
OpenDialog1.HelpContext := 10410 ;
OpenDialog1.Execute ;
end;
procedure TForm22.Button2Click(Sender: TObject);
begin
Application.HelpContext (10410) ;
end;
procedure TForm22.FormCreate(Sender: TObject);
begin
Application.HelpFile := 'c:\help.chm' ;
end;
end.
teşekkür ederiz. Daha basit düzeltme işe yaradı (Application.ModalPopupMode: = pmAuto, overwrite bir CreateWnd() yöntemini çağırdı) - Uygulamamda olabilecek diğer olası yan etkileri bilmiyorum. Muhtemelen, TApplication örneğinin zaten gideceği gibi, çıkışta herhangi bir şey yapmam gerekmez. – rossmcm
@ user89691: Açılan her formun, açıldığı forma "eşlik" edeceği yan etkisi olacaktır. Ve bu, "ebeveyn" formu kapatıldığında kapalı olacağı anlamına gelir. Daha fazla kontrole ihtiyacınız varsa, PopupMode olarak pmExplicit'i kullanın ve her formu PopupParent ... 'ı, iyi, açık bir şekilde ayarlayın ... "Parentend" (parantez arasında) çünkü formun asıl üst öğesi _not_ etkilenir, sadece PopupParent. –
Tamam, hala burada biraz kafam karışık. CreateWnd geçersiz kılma çalışıyor, bu yüzden bu şekilde bırakmak güvenli midir? Alternatif olarak, TOpenDialog ve TSaveDialog'lar otomatik olarak oluşturulur (yani, bileşenler tasarım zamanında forma bırakılmıştır). Bu yüzden: 1) Execute çağrısından hemen önce, Application.ModalPopup'un geçerli değerini kaydedin. 2) daha sonra Application.ModalPopup = pmAuto değerini ayarlayın. 3) Yürütme çağrısından sonra, Application.ModalPopup'u kaydedilen değere geri yükleyin. Bu işe yarıyor gibi görünüyor ve her şey olduğu gibi kaldığı için başka bir yere kopma ihtimalim daha az. – rossmcm