Italian community of Lazarus and Free Pascal
Programmazione => Generale => Topic aperto da: sekoto - Dicembre 18, 2017, 06:55:27 pm
-
Salve a tutti, sto facendo un applicazione col la quale viene creato un file, il quale sostanzialmente è un file di testo; all'interno della mia applicazione dovrò mettere un bottone con il quale devo avviare un'altra applicazione e contemporaneamente dovrà caricare il file creato dalla mia applicazione. Per fare un esempio pratico facciamo finta che la mia app crea un file chiamato pippo.txt; con il bottone citato prima facciamo finta che devo avviare il programma "mousepad" (editor di testo di xubuntu) il quale avrà già caricato al suo interno il file pippo.txt. Spero di essermi spiegato bene. Grazie mille
-
Ti consiglio di guardare questo: http://wiki.freepascal.org/Executing_External_Programs/it
-
Grazie gli do subito un occhiata
-
Se stai usando una versione recente di Lazarus, e l'estensione del file che devi aprire è già stata associata ad un programma, puoi anche fare così:
- aggiungi alla sezione uses "LCLIntf"
- apri il file con "OpenDocument(NomeDelFileDaAprire)"
Questa soluzione è multipiattaforma.
Ciao, Mario
-
grazie mille ma al momento sono tornato a lazarus 1.0
-
Io faccio cosi ' , uso ShellApi e ShellExecute
unit unit1;
...
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
ActnList, StdActns, StdCtrls, Menus, DBGrids, DbCtrls, ExtDlgs, ZConnection,
ZDataset, db, unit2, unit3, math, strutils, uDbFreeReporter, ShellApi;
....
procedure TForm1.ToolButton10Click(Sender: TObject);
var
TemplatePath, rprt: string;
Reporter: TDbFreeReporter;
begin
TemplatePath := ExtractFilePath(Application.ExeName)+'\test.rtf';
rprt:=ExtractFilePath(Application.ExeName)+'\out.rtf' ;
Reporter := TDbFreeReporter.Create;
try
Reporter.AddDataSet(ztable1b);
Reporter.AddDataSet(ztable2);
Reporter.AddDataSet(ztable3);
//Reporter.AddDataSet(sqlquery2);
//Reporter.AddDataSet(sqlquery3);
Reporter.CreateReport(TemplatePath, rprt);
ShellExecute(Application.MainForm.Handle, nil, pChar(rprt),
nil, nil, 1);
finally
Reporter.Free;
end;
test.rtf e out.rtf sono due file rtf
shellexecute lancia il programa che nel sistema operativo è settato per gestire i file rtf
Magari ci sarà un modo migliore ma questo funziona .
Saludos.