AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu MessageDlg

Ein Thema von BTeam · begonnen am 24. Jul 2005 · letzter Beitrag vom 3. Aug 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von BTeam
BTeam

Registriert seit: 17. Sep 2003
Ort: Nordhausen
52 Beiträge
 
Delphi 7 Enterprise
 
#1

Frage zu MessageDlg

  Alt 24. Jul 2005, 12:30
Hi,
Ich habe da eine kleine Frage... In MessageDlg kann man ja mittels [mbYes, mbNo,...] usw. festlegen welche Buttons angezeigt werden.
Meine Frage ist nun wenn mein Programm das mit einer deutschen Delphi geschrieben wurde auf einen Englischen Windows ausgeführt wird...werden dann die Button Caption auch in englisch statt in deutsch angezeigt?
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#2

Re: Frage zu MessageDlg

  Alt 24. Jul 2005, 13:00
nein, sie bleiben deutsch. genauso umgekehrt.

du kannst aber hier im forum mal nach "mymessagedlg" suchen. diese funktion formatiert den button text.
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#3

Re: Frage zu MessageDlg

  Alt 24. Jul 2005, 13:03
Leider nein. Die Captions erscheinen in der Sprache deiner Delphi-Version, weil Delphi Konstanten dafür benutzt. Immerhin sind es resourcestrings, sie können also in der Exe mit einem Ressourceneditor bearbeitet werden. Aber dass sich die Beschriftung automatisch der Sprache des Betriebssystems anpasst, schafft man so nicht.
  Mit Zitat antworten Zitat
Benutzerbild von BTeam
BTeam

Registriert seit: 17. Sep 2003
Ort: Nordhausen
52 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Frage zu MessageDlg

  Alt 24. Jul 2005, 16:37
Oha...danke für die Antwort.
Dann werde ich mir diese mymessagedlg Function mal ansehen oder zur Not bastel ich mir halt einen eigenen MsgDlg.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: Frage zu MessageDlg

  Alt 24. Jul 2005, 16:39
Oder du probierst mal MSDN-Library durchsuchenMessageBox, imho müsste das dann entsprechend der Windowsversion anzeigen
  Mit Zitat antworten Zitat
Benutzerbild von BTeam
BTeam

Registriert seit: 17. Sep 2003
Ort: Nordhausen
52 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Frage zu MessageDlg

  Alt 24. Jul 2005, 17:56
Auch interessant...werde mir einfach mal beides ansehen.
Wobei MyMessageDlg schon prima Funktioniert. Da ich ja keine "Neuen" Buttons reinmachen, sondern nur die Vorhandenen entsprechend der gewählten Sprache anpassen will. Das Funktioniert recht gut mit MyMessageDlg.
  Mit Zitat antworten Zitat
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Frage zu MessageDlg

  Alt 2. Aug 2005, 22:20
Hy

hab grad auch noch was zu dem Thema. Entweder suche ich falsch oder ich bin zu blöd dafür. Wenn ich nach "mymessagedlg" suche, find ich nur diesen Thread. Hab als Alternative MessageBox probiert, ein Problem von mir is nun folgendes:
Code:
if MessageBox(self.Handle, 'Soll der User ' + PChar(GetSelectedUser.User) + ' wirklich gelöscht werden?','Titel',MB_ICONQUESTION or MB_YESNO) = IDYES then
    // TODO: User löschen
GetSelectedUser.User ist natürlich vom Typ String. Mit MessageDlg geht das ja auch, nur MessageBox erwartet da PAnsiChar...

Lässt sich aus folgendem Grund nicht kompilieren:
Zitat:
[Error] Unit1.pas(243): Incompatible types: 'String' and 'PAnsiChar'
Es liegt an diesem Teil:
Code:
PChar(GetSelectedUser.User)
wenn ich das entferne, gehts soweit. Nur ich möchte es trotzdem drin haben. Sollte mit PChar() ja worken normal
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#8

Re: Frage zu MessageDlg

  Alt 2. Aug 2005, 23:48
also ich poste mal das, was ich dachte bei diesem thread stand. hier der daraus entstandene code:

Delphi-Quellcode:

function MyMessageDlg(const Msg: String; DlgType: TMsgDlgType;
 Buttons: TMsgDlgButtons; Captions: Array of String): Integer;
var
  aMsgDlg: TForm;
  I: Integer;
  DlgButton: TButton;
  CaptionIndex: Integer;
begin
  aMsgDlg := CreateMessageDialog(Msg, DlgType, Buttons);
  CaptionIndex := 0;

  for I := 0 to aMsgDlg.ComponentCount - 1 do
  begin
   if (aMsgDlg.Components[i] is TButton) then
   begin
    DlgButton := TButton(aMsgDlg.Components[I]);
    if CaptionIndex > High(Captions) then
     Break; // Keine weiteren Buttons da

    DlgButton.Caption := Captions[CaptionIndex]; //<- ändern

    // Todo: MyMessageDlg: Problem bei zu langen Captions wird die
    // Buttonbreite nicht geändert.
    //DlgButton.Width :=
    //DlgButton.Left :=

    Inc(CaptionIndex);
   end;
  end;

 Result := aMsgDlg.ShowModal;
end;
  Mit Zitat antworten Zitat
Benutzerbild von BTeam
BTeam

Registriert seit: 17. Sep 2003
Ort: Nordhausen
52 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Frage zu MessageDlg

  Alt 2. Aug 2005, 23:52
MyMessageDlg ist eine Funktion...weis leider auch nicht mehr genau wo ich sie dann gefunden habe darum poste ich sie einfach mal mit rein.
Die dlg_xxx Variablen enthalten hier in meinem Fall einen String in der entsprechenden Sprache.
Das Prinzip der Funktion sollte aber klar sein.

Delphi-Quellcode:
function MyMessageDlg(const Msg: String; AType: TMsgDlgType; AButtons:TMsgDlgButtons; HelpCtx: Longint): Word;
var
  Comp: TComponent;
  k: Integer;
begin
  with CreateMessageDialog(Msg, AType, AButtons) do begin
    for k := 0 to ComponentCount - 1 do
    begin
      Comp := Components[k];
      if Comp is TButton then with TButton(Comp) do
      begin
        if UpperCase(Name) = 'YES'    then Caption := dlg_yes;
        if UpperCase(Name) = 'NO'     then Caption := dlg_no;
        if UpperCase(Name) = 'OK'     then Caption := dlg_ok;
        if UpperCase(Name) = 'CANCELthen Caption := dlg_cancel;
      end;
    end;
    Result := ShowModal;
  end;
end; {Popov}
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#10

Re: Frage zu MessageDlg

  Alt 2. Aug 2005, 23:52
so sollte es mit deinem code gehen:

delphi-code:

@('Soll der User ' + PChar('Test') + ' wirklich gelöscht werden?')[1] ...

also einfach ein @ vor den string, sowie ein [1] danach. (habe 'test' eingefügt, da ich mit deiner variablen nichts anfangen konnte).

ps: gehen delphi tags sowie bold-tags egtl. nicht gleichzeitg?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz