![]() |
Öffnen einer durch DBEdit festgelegten .txt-Datei
Liebe Delphi-Praxis-Community,
ist es möglich, eine Datei (genauer gesagt eine .txt-Datei), welche durch ein DBEdit-Feld festgelegt ist beispielsweise mit einer TProcess-Procedur oder ShellExecute zu öffnen? Der Dateiname soll also im DBEdit-Feld ausgegeben werden (vorher in einer Art Adressbuch festgelegt) und die Datei bei Click auf einen Button geöffnet werden - klingt simpel, aber ich beiße mir daran ein wenig die Zähne aus.:? Könnt ihr mir einen Tipp geben? Meine Ideen (beispielsweise eine ShellExecute "auseinandernehmen", den Dateinamen einfügen und öffnen) sind bis jetzt weitgehend schiefgegangen. Über eine Antwort würde ich mich sehr freuen. Mit freundlichen Grüßen, jonrot1906. |
AW: Öffnen einer durch DBEdit festgelegten .txt-Datei
Wobei hast du denn jetzt das Problem?
|
AW: Öffnen einer durch DBEdit festgelegten .txt-Datei
Hallo,
was ich nie verstehen werde: Warum gibt es bei so einer Frage nie Quellcode? Heiko |
AW: Öffnen einer durch DBEdit festgelegten .txt-Datei
Was zum Geier soll das sein: ein DBEdit-Feld? DBEdit ist eine datensensitive Komponente zur Darstellung und Bearbeitung des Inhalts eines Tabellenfeldes. Dem Feld ist es dabei vollkommen egal, ob es durch ein DBEdit oder z.B. ein DBText dargestellt wird. Mit anderen Worten: die zufällig oder absichtlich gewählte Komponente zur Darstellung des Feldinhaltes definiert nicht das Feld. Daher gibt es auch kein DBEdit-Feld :!:
Hast du eine Tabelle, die über eine Spalte verfügt, in der du komplette Dateinamen abspeicherst, rufst du einfach den jeweiligen Dateinamen aus der Datenbank ab. Dabei ist es vollkommen gleichgültig, ob dieser Dateiname gerade in einer datensensitiven Komponente angezeigt wird oder nicht.
Delphi-Quellcode:
Diesen Dateinamen übergibst du dann der entsprechenden Methode, um z.B. eine URL anzuzeigen:
Procedure TDatMod.Q_MyTableAfterScroll(DataSet: TDataSet);
begin GlobalerDateiName := Q_MyTable.FieldByName('DATEINAME').AsString; end;
Delphi-Quellcode:
Oder um ein Programm zu starten, das mit dem Dateityp verknüpft ist:
Procedure TGlobalix.URLanzeigen(Const URLText: string; Handle: HWND);
begin URL := PChar(URLText + #0); ShellExecute(Handle, nil, URL, nil, nil, SW_SHOW); end;
Delphi-Quellcode:
Procedure TGlobalix.CallApplication(Const Datei: string; Handle: HWND);
begin ShellExecute(Handle, 'open',PChar(ExtractFileName(Datei)), nil,PChar(ExtractPileDir(Datei)),SW_SHOWNORMAL); end; |
AW: Öffnen einer durch DBEdit festgelegten .txt-Datei
Zunächst erstmal vielen Dank für die schnellen Antworten. Die angebrachten Bemerkungen werde ich mir zu Herzen nehmen und versuchen, es beim nächsten Mal besser zu machen.
Mein Grundproblem hat @perlsau ganz gut erkannt und auch sehr gut beantwortet, dankesehr dafür. Im Folgenden habe ich den Quellcode meines Programms angefügt, wobei ich dazu sagen muss, dass dieser aktuell noch in Lazarus geschrieben ist.
Delphi-Quellcode:
Anstelle von FileNameEdit wollte ich gern ShellExecute oder ähnliches einfügen, um den in der Spalte 'Verzeichnis' ausgegebenen Dateinamen schließlich zu öffnen.
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, sqlite3conn, sqldb, db, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, DBGrids, DbCtrls, Calendar, EditBtn, ComCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Calendar1: TCalendar; DataSource1: TDataSource; DBEdit1: TDBEdit; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBEdit5: TDBEdit; DBEdit6: TDBEdit; DBEdit7: TDBEdit; DBEdit8: TDBEdit; DBEdit9: TDBEdit; DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; FileNameEdit1: TFileNameEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; OpenDialog1: TOpenDialog; Panel1: TPanel; SQLite3Connection1: TSQLite3Connection; SQLQuery1: TSQLQuery; SQLTransaction1: TSQLTransaction; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin SQLQuery1.Edit; SQLQuery1.UpdateMode:=UpWhereChanged; SQLQuery1.ApplyUpdates; SQLTransaction1.Commit; SQLQuery1.Close; SQLQuery1.Open; end; procedure TForm1.Button2Click(Sender: TObject); begin SQLQuery1.Close; SQLQuery1.Open; end; procedure TForm1.Button3Click(Sender: TObject); begin close; end; procedure TForm1.Button4Click(Sender: TObject); var o : String; begin o:=DBEdit1.Text; FileNameEdit1.Text:='C:\Users\Jonas\Documents\BUSSE\Adressbuch2\' + o + '.txt'; end; procedure TForm1.FormCreate(Sender: TObject); begin Form1. Caption:='SQLite database with DBNavigator'; SQLite3Connection1.DatabaseName:='Adressbook.db'; SQLite3Connection1.Connected:=true; SQLTransaction1.Database:=SQLite3Connection1; SQLQuery1.Database:=SQLite3Connection1; SQLQuery1.SQL.text:='Select * FROM Adressbook'; SQLQuery1.open; DataSource1.DataSet:=SQLQuery1; DBGrid1.DataSource:=DataSource1; DBNavigator1.DataSource:=DataSource1; DBEdit1.DataSource:=Datasource1; DBEdit2.DataSource:=Datasource1; DBEdit3.DataSource:=Datasource1; DBEdit4.DataSource:=Datasource1; DBEdit5.DataSource:=Datasource1; DBEdit6.DataSource:=Datasource1; DBEdit7.DataSource:=Datasource1; DBEdit8.DataSource:=Datasource1; DBEdit9.DataSource:=Datasource1; DBEdit1.DataField:='ID'; DBEdit2.DataField:='Vorname'; DBEdit3.DataField:='Nachname'; DBEdit4.DataField:='Strasse'; DBEdit5.DataField:='PLZ'; DBEdit6.DataField:='Ort'; DBEdit7.DataField:='EMail'; DBEdit8.DataField:='Telefon'; DBEdit9.DataField:='Verzeichnis'; DBGrid1.AutoFillColumns:=true; end; end. Die Idee von @perlsau werde ich gleich mal ausprobieren, mal sehen ob es funktioniert. Mit freundlichen Grüßen jonrot1906 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 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