AGB  ·  Datenschutz  ·  Impressum  







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

Dateiname beim geöffnetem TSaveDialog ändern

Ein Thema von Popov · begonnen am 28. Dez 2012 · letzter Beitrag vom 29. Dez 2012
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

Dateiname beim geöffnetem TSaveDialog ändern

  Alt 28. Dez 2012, 22:04
Wie kann man das Feld Dateiname beim geöffneten TSaveDialog ändern. Damit meine ich TSaveDialog bei/nach Execute. Änderungen an FileName bewirken nichts.

Entweder es gibt einen Schalter für Aktualisierungen den ich übersehen habe oder ich mache etwas falsch.

Alternativ würde es mich interessieren wie man nach Dateityp Änderung dem Dateinamen eine neue Erweiterung geben kann.
  Mit Zitat antworten Zitat
bernerbaer
(Gast)

n/a Beiträge
 
#2

AW: Dateiname beim geöffnetem TSaveDialog ändern

  Alt 28. Dez 2012, 22:50
vielleicht hilft Stackoverflow weiter
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Dateiname beim geöffnetem TSaveDialog ändern

  Alt 29. Dez 2012, 10:38
War genau das was ich gesucht habe. Danke.

Delphi-Quellcode:
procedure TFormX.SaveDialogTypeChange(Sender: TObject);
const
  WM_USER = $0400;
  CDM_FIRST = WM_USER + 100;
  CDM_SETCONTROLTEXT = CDM_FIRST + $0004;
var
  FName, Ext: string;
begin
  if Sender is TSaveDialog then
    with TSaveDialog(Sender) do
    begin
      if DirectoryExists(FileName) then
        Exit;

      case FilterIndex of
      1: Ext := '.abc';
      2: Ext := '.def';
      else
        Ext := ExtractFileExt(FileName);
      end;

      FName := ExtractFileName(ChangeFileExt(FileName, Ext));
      SendMessage(Windows.GetParent(Handle), CDM_SETCONTROLTEXT, 1152, LongInt(PChar(FName)));
    end;
end;
Nur informationeller, falls es einer weiß - kann mir einer sagen wieso das hier nicht funktioniert?

Delphi-Quellcode:
...
      FileName:= ChangeFileExt(FileName, Ext);
...
      SendMessage...;
    end;
end;
Hier ist keine Änderung an FileName möglich.
  Mit Zitat antworten Zitat
terence14
(Gast)

n/a Beiträge
 
#4

AW: Dateiname beim geöffnetem TSaveDialog ändern

  Alt 29. Dez 2012, 11:13
...
SaveDialog1.FileName:= ChangeFileExt(SaveDialog1.FileName, Ext);
...

MfG,
terence
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Dateiname beim geöffnetem TSaveDialog ändern

  Alt 29. Dez 2012, 11:24
Daran liegt es nicht, das ist schon mit with TSaveDialog(Sender) do abgedeckt. Außerdem habe ich es auch schon so wie du es gemacht hast vorher getestet.
  Mit Zitat antworten Zitat
thomasschaf
(Gast)

n/a Beiträge
 
#6

AW: Dateiname beim geöffnetem TSaveDialog ändern

  Alt 29. Dez 2012, 11:48
 SaveDialog1.FileName:= ChangeFileExt(SaveDialog1.FileName, Ext); Das geht nur wenn der Dialog noch nicht offen ist, also vor dem "Execute"
In dieser Zeile hält das Programm auch an!

if
SaveDlalog1.Execute // in dieser Zeile hält das Programm an und wartet auf eine Aktion des Nutzers
then ShowMessage(SaveDialog.Filename) else Showmessage(Abbruch´'); // Auswertung

Zum Ändern wenn der Dialog offen ist muss man halt wie es der Code, den du gepostet hast, zeigt mit dem OngTypeChange abfangen und dann üver das Handle das Textfeld ermitteln und ändern. Diese Events werden auch ausgelöst wenn der Code eigentlich angehalten ist, wie Auch TTimer.OnTimer

Hoffe das erklärt es
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.445 Beiträge
 
Delphi 12 Athens
 
#7

AW: Dateiname beim geöffnetem TSaveDialog ändern

  Alt 29. Dez 2012, 11:55
Nur informationeller, falls es einer weiß - kann mir einer sagen wieso das hier nicht funktioniert?

Delphi-Quellcode:
...
      FileName:= ChangeFileExt(FileName, Ext);
...
      SendMessage...;
    end;
end;
Hier ist keine Änderung an FileName möglich.
Während der Dialog aktiv ist, arbeiten GetFileName und SetFileName nicht konsistent. Beim Lesen wird das aktuelle Handle bemüht, während beim Schreiben die Feld-Variable verwendet wird. Die Änderung wird also in der Feld-Variablen korrekt gespeichert, ein nachfolgendes Lesen holt sich den Wert aber wieder über das Handle. Damit kann die Änderung nicht mehr ausgelesen werden. Das lässt sich also nur mit einer lokalen Variablen lösen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: Dateiname beim geöffnetem TSaveDialog ändern

  Alt 29. Dez 2012, 14:28
Danke. So grob habe ich mir das in die Richtung gedacht, war mir aber nicht sicher.

Nur informationeller, ...
Blöde Autokorrektur. Sollte "informationshalber" heißen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:31 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