Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Texte ändern in Tprintdialog (https://www.delphipraxis.net/156080-texte-aendern-tprintdialog.html)

R2009 19. Nov 2010 07:08

Texte ändern in Tprintdialog
 
Hi DP'ler,
ich möchte die Standardtexte in Tprintdialog ändern.
Mit Topen bzw Tclosedialog funktioniert das prima mit Tprintdialog nicht.

Delphi-Quellcode:
procedure TPrintdlg.printDialogEEShow(Sender: TObject);
const LB_FILETYPES_ID = 1089;LB_FILENAME_ID = 1090;LB_DRIVES_ID = 1091;LB_Title=1088;
var  eePrintDialog: HWND;a:string;
begin
   eePrintDialog := GetParent((sender as Tprintdlg).Handle);
   a:='haha';
   SendMessage(eePrintDialog, CDM_SETCONTROLTEXT, idOk, Longint(PChar(a)));
   a:='tata';
   SendMessage(eePrintDialog, CDM_SETCONTROLTEXT, idCancel, Longint(PChar(a)));
   a:='tutu';
   SendMessage(eePrintDialog, CDM_SETCONTROLTEXT, LB_FILETYPES_ID, Longint(PChar(a)));
   a:='pfui';
   SendMessage(eePrintDialog, CDM_SETCONTROLTEXT, LB_FILENAME_ID, Longint(PChar(a)));
   a:='tröt';
   SendMessage(eePrintDialog, CDM_SETCONTROLTEXT, LB_DRIVES_ID, Longint(PChar(a)));
end;
Die Prozedur wird an onshow des Dialogs gehängt. Zumindest der OK und ESC Button müssten funktioieren. geht aber nicht.

hat jemand einen Tip für mich?

Grüsse
rainer

Luckie 19. Nov 2010 07:19

AW: Texte ändern in Tprintdialog
 
Was ist CDM_SETCONTROLTEXT? Die Nachricht kenne ich gar nicht. Hast du es schon mal mit SetDlgItemText (http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx) probiert? oder einfach mit WM_SETTEXT? Ist das Handle gültig, dass du holst?

R2009 19. Nov 2010 07:25

AW: Texte ändern in Tprintdialog
 
Hi Luckie,
handle hat sich geändert, sodass ich annehmen muss, dass es gültig ist.
CDM_SETCONTROLTEXT stammt aus CommDlg

Wie gesagt, das ganze funktioniert mit den beiden anderen Dialogtypen einwandfrei.

Grüsse
Rainer

R2009 19. Nov 2010 07:37

AW: Texte ändern in Tprintdialog
 
Hi Luckie,habs mit deinem Vorschlag probiert. Kommt aber letztlich auf dasselbe raus was ich schon probiert hatte. Tprintdialog reagiert auf kein i was immer ich auch versuche.
pd2 ist der name des Tprinterdialogs (auf die Form gezogen).

Delphi-Quellcode:
   b:=SetDlgItemText(pd2.Handle,i,pchar(a));

Grüsse
Rainer

Bummi 19. Nov 2010 07:51

AW: Texte ändern in Tprintdialog
 
Habs mal anders probiert, vielleicht hilft es Dir

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,CommDlg;
const
  InputMessage = WM_USER + 200;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    PrintDialog1: TPrintDialog;
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
     procedure InputMess(var Msg: TMessage); message InputMessage;
  end;
var
  Form1: TForm1;

implementation

{$R *.dfm}





procedure TForm1.Button2Click(Sender: TObject);
begin
     PostMessage(Handle, InputMessage, 0, 0);
     PrintDialog1.Execute(handle)
end;

procedure TForm1.InputMess(var Msg: TMessage);
const LB_FILETYPES_ID = 1089;LB_FILENAME_ID = 1090;LB_DRIVES_ID = 1091;LB_Title=1088;
var eePrintDialog: HWND;a:string;
begin
  eePrintDialog := PrintDialog1.Handle;//Screen.Forms[0].Handle;
  if (eePrintDialog <> 0) then
   begin
   a:='haha';
   SetDlgItemText(eePrintDialog,idOK,pchar(a));
   a:='tata';
   SetDlgItemText(eePrintDialog,idCancel,pchar(a));
   end;
end;

end.

R2009 19. Nov 2010 09:41

AW: Texte ändern in Tprintdialog
 
Hi,

vielen Dank, das funktioniert. Es würde mich trotzdem intessieren wo der Unterschied liegt.
Im meinem und in deim Fall machen wir nichts anderes als eine message an Tprinterdalog zu senden.
In deinem Fall erzwingst du das senden durch den postmessage Befehl.
Eigentlich müsste es doch reichen mit SetDlgItemText den Text zu setzen.
Diese system kann ich bei mir nicht anwenden. Muss mit abgeleitetem Tprintfiledialog arbeiten.

Grüsse
Rainer

R2009 19. Nov 2010 10:00

AW: Texte ändern in Tprintdialog
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

das funktioniert solange ich das in der Hauptform implementiere. Habs jetzt in meine eigene Klasse exportiert. Funktioniert nicht.
Hab den Code angehängt. Vielleicht weiss jemand eine Lösung.
(das ist Quick&dirty Code zum ausprobieren)
Aufruf mit button5. Button1 und 2 sind für die anderen Dialoge (open und save)
button 3 und 4 sind nutzlos.

Grüsse
Rainer


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz