SaveDialog + OnTypeChange = ChangeFileExt
-
Im SaveDialog versuch ich im OnTypeChange die FileExt entsprechend dem FilterIndex zu wechseln. Es bewegt sich nichts. Beispiel für die vielen Mißlingnisse:
void __fastcall TEditor::SaveDialogTypeChange(TObject *Sender) { String ch = ExtractFileExt(SaveDialog->FileName), fn = SaveDialog->FileName; SaveDialog->FileName = StringReplace(fn, ch, ".cpp", TReplaceFlags()<<rfReplaceAll); }
Wenn das mal gelingt, will ich auf die FileExt des FilterIndex eingehen. Aber ich kann ja nicht mal den ganzen FileName wechseln.
Hab es testhalber auch im OnSelectionChange versucht. Natürlich auch negativ. Mit der Suchfunction komm ich in die Nähe aber nicht aufs Thema. Kann mir jemand 'ne Zündhilfe geben?
-
ist dafür nicht DefaultExt da?
-
Alles durchprobiert, @Sunday - anstatt nur das eine zu versuchen, das wirklich geht.
Ich hab keinerlei Macht über den Eintrag. Die einfachste Übung sollte ja sein, den ganzen FileName zu ändern. Fängt alles meistens mit 'W' an (war wohl nix).
Aber man kann es ändern. Dafür ist (IHMO) das Ereignis OnTypeChange gedacht. Manchmal bekommt man eine App in die Hand, da geht es. - Natürlich wissen es wieder mal alle, nur der doofe Omega nicht. Will aber auch mal die Oberflächlichkeiten vermeiden, die uns die Profis zu oft vorsetzen. :p
-
Hallo,
Warum willst du die Extension selbst anhängen. Der Filename sollte ohne Extension sein weil TSaveDialog diese (entsprechend des ausgewählten Filters) selbst anhängt.
Abgesehen davon kann man die Extension mit ChangeFileExt etwas einfacher auswechseln.Ciao
-
Der FileName kann je nach Situation mit oder ohne Extension sein.
ChangeFileExt hatte ich als erstes genutzt, nichts hat sich bewegt.
Also hab ich verschiedene Wege probiert. Ich kann definitiv rein gar nichts via Code ändern. Das wollte der Aufbau meiner Frage sagen.
Also in der ersten Stufe wär mit ganz egal, was ich erreichen kann. Wichtig ist zunächst, daß ich überhaupt mal eine Änderung bewirken kann. Dann hab ich einen Weg, den ich weiterverfolgen kann.
Wie wird denn die Aufgabe normalerweise gelöst?
-
Nicht, daß es so aussieht, als hätte ich noch nichts ernsthaftes probiert. Damit hatte ich ja angefangen. Hab jetzt mal den Versuch rekonstruiert, von dem ich annehm, daß er zu gehen hätte:
void __fastcall TEditor::SaveDialogTypeChange(TObject *Sender) { if(SaveDialog->FilterIndex == 1) SaveDialog->DefaultExt = (".txt"); else if(SaveDialog->FilterIndex == 2) SaveDialog->DefaultExt = (".bat"); else if(SaveDialog->FilterIndex == 3) SaveDialog->DefaultExt = (".cpp"); else if(SaveDialog->FilterIndex == 4) SaveDialog->DefaultExt = (".h"); // mit und ohne Zuweisung zu SaveDialog->FileName probiert //SaveDialog->FileName = ChangeFileExt(SaveDialog->FileName, SaveDialog->DefaultExt); }
Save->Dialog->Options sind [ofHideReadOnly,ofExtensionDifferent]
Wie auch immer, es bewegt sich nichts. Wie sieht das in euren Apps aus. Es muß doch rauszubekommen sein, was ich übersehen hab.
-
Hallo,
Wenn du in die Hilfe schaust, wirst du feststellen, das DefaultExt verwendet wird wenn keine registrierte Extension verwendet wird. Lass das Ganze in OnTypeChange einfach weg und es sollte normal funktioieren. Bei mir tut es das jedenfalls.
Ciao
-
@Braunstein, hab Dank für deine imerwährende Mühe und Hilfe. Also hab ich wieder die Function rausgenommen. Hab es mit und ohne eingestellte Optons ofExtensionDifferent probiert. Weder mit noch ohne von mir gesetzte Extension klappt es. Es wird keine angehängt und keine gewechselt.
Jetzt bleibt eigentlich fast nur noch die Möglichkeit, daß die Kompos im BCB3 das noch nicht können. So kommt es mir sowieso vor, nachdem sich rein gar nix bewegen läßt.
Kennt jemand den BCB3 und weiß was darüber? (Will doch auch habbe :p ).