Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   abrir programa con combobox1 (https://www.clubdelphi.com/foros/showthread.php?t=48480)

arespremium 26-09-2007 05:02:31

abrir programa con combobox1
 
Mirar la imagen

que modificacion le harian?

que opinan sobre este codigo, se selecciona lo que se decea abrir en el combobox1 presionando el boton y se abre el probrama.

Segun esto:
Mostrar (Integer) especifica la forma en que se mostrará la aplicación especificada en NombreFichero. Hay varios valores posibles:

SW_HIDE
SW_RESTORE
SW_SHOW
SW_SHOWNA
SW_SHOWNORMAL
SW_SHOWDEFAULT
SW_MAXIMIZE
SW_MINIMIZE
SW_SHOWMAXIMIZED
SW_SHOWMINIMIZED
SW_SHOWMINNOACTIVE
SW_SHOWNOACTIVATE

Código Delphi [-]
uses:
 ShellApi;

procedure TForm1.FormCreate(Sender: TObject);
begin
if ComboBox1.ItemIndex <> -0 then
combobox1.items.add('notepad');
combobox1.items.add('calculadora');
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
case ComboBox1.ItemIndex of
 0 : begin // notepad
   Shellexecute('C:\notepad.exe'), SW_Shownormal);
end;
1 : begin // calculadora
  Shellexecute('C:\calculadora.exe'), SW_Shownormal);
end;
end;
end.

aunque dicen que tambien funciona para abrir con:

Código Delphi [-]
begin
  WinExec(PChar('c:\windows\calc.exe'),SW_SHOWNORMAL); {Ejecuta la calculadora}
end;

saludos

Neftali [Germán.Estévez] 26-09-2007 10:18:26

Entiendo lo que quieres hacer, pero ¿Cual es exactamente la pregunta? ¿Modificaciones respecto a qué? ¿Algun error?

Intentar ser más concreto en lo que necesitas.

ixMike 28-10-2007 16:17:52

Bueno, la verdad es que no queda muy claro lo que quieres.

Mis modificaciones/sugerencias para el código serían:

• ¿Para qué es el código del FormCreate? Puedes poner los items del ComboBox en diseño, y si deseas hacerlo en Runtime, la comprobación que haces (Combobox.ItemIndex <> 0) es un poco extraña (¿si no está seleccionado el elemento 0?). Además, después del then te falta un begin.

• En el Button1Click, mejor sería ejecutar lo que ponga en el item del combobox, si es que estos pueden variar en algún momento. Es decir, quitar el case y poner WinExec(PChar(combobox1.items[combobox.itemindex]),SW_SHOWNORMAL); o mejor WinExec(PChar(combobox1.text),SW_SHOWNORMAL);

• Dentro del button1click, decirte que el ShellExecute tiene muchísimos más parámetros (mira la ayuda) y que has puesto por ahí un paréntesis de más.

• Siguiendo aquí, "notepad.exe" "calc.exe" no están en "C:\", sino en "C:\Windows\" y "C:\Windows\system32", usa el que más te guste.

• En el WinExec, el comando no es necesario ponerlo entre PChar(), a no ser que introduzcas una o más variables de tipo string o array of char.

Por último, si quieres poner la opción de Mostrar, pues coloca otro ComboBox, y los distintos valores en los items. SW_SHOWNORMAL y compañía son constantes numéricas. Para saber qué valor tienen, pues te improvisas una línea de código cómo esta: Caption:=IntToStr(SW_MAXIMIZE);
Tan sólo tendrías que hacer una comprobación (aquí sí es recomendable el case).


En fin, no sé si esta expliación te sirve, igual si nos explicas qué es lo que quieres hacer.


Saludos.


La franja horaria es GMT +2. Ahora son las 04:19:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi