PDA

Ver la Versión Completa : abrir programa con combobox1


arespremium
26-09-2007, 05:02:31
Mirar la imagen (http://s1.subirimagenes.com/imagenes/previo/thump_1463350abrirnotepad.gif)

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


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:


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.