Ver Mensaje Individual
  #2  
Antiguo 08-11-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.435
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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 [-]
  // Grabar la imagen
  Image1.Picture.Bitmap.SaveToFile('c:\temp\pictmp1.bmp');
  // Abrirla (con el programa por defecto)
  ShellExecute(0, 'Open', PChar('c:\temp\pictmp1.bmp'), nil, nil, SW_SHOW );
  // Espero 3 segundos
  sleep(3000);
  // La borro
  DeleteFile('c:\temp\pictmp1.bmp');
 
  // BIS, pero con WinExec y pasando programa y parámetros
  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
  // Grabar la imagen
  Image1.Picture.Bitmap.SaveToFile('c:\temp\pictmp1.bmp');
  // rellenamos la estructura necesaria
  FillChar(StartupInfo,Sizeof(StartupInfo),#0);
  StartupInfo.cb := Sizeof(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow := 1{0 no visible, 1 Visible};
  // Llamada
  CreateProcess(
      PChar('c:\Archivos de programa\Archivos comunes\Microsoft Shared\PhotoEd\PHOTOED.EXE'), {Nombre del EXE}
      PChar(' c:\temp\pictmp1.bmp'), {Nombre del parámetro -imagen-}
      nil,
      nil,
      false,
      CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
      nil,
      nil,
      StartupInfo,
      ProcessInfo);
  // Esperar 3 segundos
  sleep(3000);
  // borrar el fichero
  DeleteFile('c:\temp\pictmp1.bmp');
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita