Zitat von
citybreaker:
Das kann man im
OI ändern.
Du musst bei DefaultEx einen Punkt hinmachen.
Das verändert doch das Verhalten des Dialoges nicht in der gewünschten Form! Es legt doch lediglich die Standardextension fest...
Es soll aber die Extension des angezeigten Dateinamens automatisch angepasst werden, wenn ein neuer Filter gewählt wird.
Zitat von
Christian Seehase:
Ausserdem funktioniert das natürlich nur, wenn wenn der Filter genau eine Extension enthält.
Sind es mehrere, oder nicht einfach eine Extension müsste man die neue Extension selber verwalten.
Bei einem Savedialog macht es aber wenig bzw. überhaupt keinen Sinn, mehrere Extensions zum Speichern zu wählen
Ich habe auch mal folgendes versucht:
Delphi-Quellcode:
procedure TForm1.SaveDialog1TypeChange(Sender: TObject);
var
Tmp, Tmp2: string;
n: integer;
TmpExt: TStringList;
begin
if pos('.', SaveDialog1.FileName) > 0 then
begin
TmpExt := TStringList.Create;
Tmp := '|' + Savedialog1.Filter + '||';
n := 0;
while pos('|', Tmp) > 0 do
begin
if n = 2 then
n := 0;
if n = 0 then
begin
Tmp2 := copy(Tmp, pos('|', Tmp) + 1, Length(Tmp));
while (Tmp2 <> '') and (copy(Tmp2, 1, 1) <> '|') do
Tmp2 := copy(Tmp2, 2, Length(Tmp2));
Tmp := copy(Tmp, 1, pos('|', Tmp) - 1) + Tmp2;
end
else
begin
if copy(Tmp, 1, pos('|', Tmp) - 1) <> '' then
TmpExt.Add(copy(Tmp, 1, pos('|', Tmp) - 1));
Tmp := copy(Tmp, pos('|', Tmp) + 1, Length(Tmp));
end;
n := n + 1;
end;
Tmp := SaveDialog1.FileName;
Tmp2 := '';
while pos('.', Tmp) > 0 do
begin
Tmp2 := Tmp2 + copy(Tmp, 1, pos('.', Tmp));
Tmp := copy(Tmp, pos('.', Tmp) + 1, Length(Tmp));
end;
Tmp := TmpExt[SaveDialog1.FilterIndex - 1];
Tmp := copy(Tmp, pos('.', Tmp) + 1, Length(Tmp));
SaveDialog1.FileName := Tmp2 + Tmp;
end;
end;
Der Code arbeitet korrekt und überschreibt auch den FileName, aber dieser neue FileName wird dann nicht angezeigt...
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.