Cita:
Empezado por LoBo2024
Como podria hacer que al clickar sobre la imagen del tImage se abrierá en una aplicación externa? hay posibilidades de elegir la aplicación? si se abre con el programa que tengan por defecto para esa aplicación también me vale...
|
Bueno, todo los que comentas se puede hacer; Abrir la imagen, en el programa por defecto o en otro. La única premisa (para facilitar el trabajo es que la imagen exista en disco); Por ejemplo puedes crearla en un dir. temporal (y luego borrarla si no te interesa);
Para abrirla con el programa por defecto puedes utlizar
WinExec o
ShellExecute. Añade al USES la uni
ShellAPI;
Código Delphi
[-]
Image1.Picture.Bitmap.SaveToFile('c:\temp\pictmp1.bmp');
ShellExecute(0, 'Open', PChar('c:\temp\pictmp1.bmp'), nil, nil, SW_SHOW );
sleep(3000);
DeleteFile('c:\temp\pictmp1.bmp');
Image1.Picture.Bitmap.SaveToFile('c:\temp\pictmp1.bmp');
WinExec(PChar('mspaint ' + 'c:\temp\pictmp1.bmp'), SW_SHOW);
sleep(3000);
DeleteFile('c:\temp\pictmp1.bmp');
Otra opción es utilizar
CreateProcess, es un poco más complejo, pero también más completo; Un ejemplo podría ser el siguiente (con éste puedes utilizar otro programa -por ejemplo el PhotoEditor de MS-)
Código Delphi
[-]
var
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
Image1.Picture.Bitmap.SaveToFile('c:\temp\pictmp1.bmp');
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := 1;
CreateProcess(
PChar('c:\Archivos de programa\Archivos comunes\Microsoft Shared\PhotoEd\PHOTOED.EXE'),
PChar(' c:\temp\pictmp1.bmp'),
nil,
nil,
false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
nil,
nil,
StartupInfo,
ProcessInfo);
sleep(3000);
DeleteFile('c:\temp\pictmp1.bmp');