Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Insertar combo con datos a Excel desde Delphi (https://www.clubdelphi.com/foros/showthread.php?t=56740)

capo979 26-05-2008 19:51:04

Insertar combo con datos a Excel desde Delphi
 
Hola gente uso delphi 7 y me gustaría poder insertar desde delphi a excel combos y con sus datos también. la idea es que toda una columna tenga un combo en cada fila.

Espero por la ayuda de alguien

un abrazo a todos

Saludos

Betus 29-05-2008 02:27:27

Combo boxes maestro-detalle en excel
 
Hola, estoy desarrollando una aplicación en la que requiero, al igual que capo979, insertar combo boxes en excel desde delphi (7), pero además, requiero que estos sean maestro-detalle, es decir, condicionar por ejemplo, si en el primer combo box tengo un listado de paises, al seleccionar uno en particular, el segundo combo box muestre únicamente las entidades federativas correspondientes.

Si alguien tiene alguna idea de cómo implementar esto, les agradezco cualquier comentario, dato, pista, etc que me (nos) pueda ayudar...

Saludos banda!!!

Betus 04-06-2008 03:41:35

capo979...No se si esto te sirva, después de buscar bastante (no encontré nada concreto) y sacar deducciones, hice este procedimiento con el que se puede insertar combo boxes en Excel desde Delphi:

procedure InsertaComboEnCelda(x,y:Integer; rangoCeldas,tituloMsjError,msjError:String);
begin
try
Libro.Cells.Item[x,y].Validation.Delete;
Libro.Cells.Item[x,y].Validation.Add(xlValidateList,AlertStyle := xlValidAlertStop,Operator := xlBetween, Formula1:=rangoCeldas);
Libro.Cells.Item[x,y].Validation.IgnoreBlank := True;
Libro.Cells.Item[x,y].Validation.InCellDropdown := True;
Libro.Cells.Item[x,y].Validation.InputTitle := '';
Libro.Cells.Item[x,y].Validation.ErrorTitle := tituloMsjError;
Libro.Cells.Item[x,y].Validation.InputMessage := '';
Libro.Cells.Item[x,y].Validation.ErrorMessage := msjError;
Libro.Cells.Item[x,y].Validation.ShowInput := True;
Libro.Cells.Item[x,y].Validation.ShowError := True;
except
CancelaOperacionExcel('Error: No se puede insertar lista en la celda ['+IntToStr(x)+','+IntToStr(y)+'].');
end;
end;

Para insertar validaciones de longitud en las celdas:

procedure InsertaValidacionLongitudEnCelda(x,y,longMin,longMax:Integer; tituloMsjError,msjError:String);
begin
try
Libro.Cells.Item[x,y].Validation.Delete;
Libro.Cells.Item[x,y].Validation.Add(xlValidateTextLength,AlertStyle := xlValidAlertStop,Operator := xlBetween, Formula1:=longMin, Formula2:=longMax);
Libro.Cells.Item[x,y].Validation.IgnoreBlank := True;
Libro.Cells.Item[x,y].Validation.InCellDropdown := True;
Libro.Cells.Item[x,y].Validation.InputTitle := '';
Libro.Cells.Item[x,y].Validation.ErrorTitle := tituloMsjError;
Libro.Cells.Item[x,y].Validation.InputMessage := '';
Libro.Cells.Item[x,y].Validation.ErrorMessage := msjError;
Libro.Cells.Item[x,y].Validation.ShowInput := True;
Libro.Cells.Item[x,y].Validation.ShowError := True;
except
CancelaOperacionExcel('Error: No se puede insertar validación de longitud en la celda ['+IntToStr(x)+','+IntToStr(y)+'].');
end;
end;

Para insertar validaciones de fecha den las celdas al capturar:

procedure InsertaValidacionFechaEnCelda(x,y:Integer; fechaMin,fechaMax,tituloMsjError,msjError:String);
begin
try
Libro.Cells.Item[x,y].Validation.Delete;
Libro.Cells.Item[x,y].Validation.Add(xlValidateDate,AlertStyle := xlValidAlertStop,Operator := xlBetween, Formula1:=fechaMin, Formula2:=fechaMax);
Libro.Cells.Item[x,y].NumberFormat := 'dd/mm/aaaa;@';
Libro.Cells.Item[x,y].Validation.IgnoreBlank := True;
Libro.Cells.Item[x,y].Validation.InCellDropdown := True;
Libro.Cells.Item[x,y].Validation.InputTitle := '';
Libro.Cells.Item[x,y].Validation.ErrorTitle := tituloMsjError;
Libro.Cells.Item[x,y].Validation.InputMessage := '';
Libro.Cells.Item[x,y].Validation.ErrorMessage := msjError;
Libro.Cells.Item[x,y].Validation.ShowInput := True;
Libro.Cells.Item[x,y].Validation.ShowError := True;
except
CancelaOperacionExcel('Error: No se puede insertar validación de fecha en la celda ['+IntToStr(x)+','+IntToStr(y)+'].');
end;
end;

Como puedes ver, dentro del try, lo único que cambia en cada procedimiento es el Validation.Add (voy a ver como fusiono estos tres procedimientos -y los demás que pueda necesitar- en uno solo).

Ahh, tienes que declarar estas constantes:

xlValidateList = 3;
xlValidateTextLength = 6;
xlValidateDate = 4;
xlValidAlertStop = 1;
xlBetween = 1;

...y rangoCeldas, debes pasarlo al primer procedimiento por ejemplo: '=$E$4:$E$5'...esto le indica al procedimiento que los valores que va a tomar el combo se encuentran ubicados entre las celdas E4:E5, en mi caso, en estas dos celdas tengo los valores: Persona moral y Persona física respectivamente.

Saludos...

P.D. Volviendo a mi requerimiento particular, hay una página en la que encontré algo de cómo hacer combo boxes maestro-detalle...La página es:

http://www.todoexpertos.com/categori...diendo-de-otra

Si alguien logra hacer esto, que no sea ojaldra, que lo comparta!!! :D

Betus 04-06-2008 03:45:24

oops...autorespondiendo a mi P.D....voy a tirarme un clavado en esa página, a ver qué rayos puedo hacer, pero, si alguien más está interesado en el tema y logra algún avance, por favor, que lo publique en este hilo!!! gracias banda!!!

capo979 04-06-2008 14:26:09

Betus Muy groso lo tuyo

muchas gracias

abrazo


La franja horaria es GMT +2. Ahora son las 11:32:25.

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