Hola amigos he creado un bloc de notas y quisiera me trabajara por pestañas como el NotePad como pudiera hacer esto
saludos
David
Publicado:
Dom Ago 22, 2010 3:59 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Bloc de Nota con Pestañas
Anuncios
davsoft escribió:
Hola amigos he creado un bloc de notas y quisiera me trabajara por pestañas como el NotePad como pudiera hacer esto
saludos
David
En la siguiente aplicación tienes un ejemplo sobre cómo trabajar con PageControl (pestañas) en tiempo de ejecución, puedes ver cómo crear una pestaña en un PageControl, cómo eliminar pestañas y cómo añadir componentes (como TEdit o DBGrid) a una pestaña del PageControl en tiempo de ejecución:
En concreto, en el siguiente procedimiento, se utiliza este método de creación de pestañas en un PageControl en tiempo de ejecución:
Código:
procedure TformMenuPrincipal.btIniciarBusquedaClick(Sender: TObject);
var
i : integer;
tablaActual, consultaSQL : string;
camposTablaTexto : TStringList;
begin
numCoincidencias := 0;
numTablas := 0;
tabConexion.Show;
if not bd.Connected then
begin
MessageDlg('Debe realizar la conexión con el servidor de MySQL.',
mtInformation, [mbok], 0);
btConectar.SetFocus;
end
else
begin
if txtValorBuscar.Text = '' then
begin
MessageDlg('Debe introducir el valor a buscar.',
mtInformation, [mbok], 0);
txtValorBuscar.SetFocus;
end
else
begin
if lsTablas.SelCount <= 0 then
begin
MessageDlg('Debe seleccionar las tablas en las que se realizará ' +
'la búsqueda.', mtInformation, [mbok], 0);
lsTablas.SetFocus;
end
else
begin
if MessageDlg('¿Está seguro que desea iniciar la búsqueda en ' +
inttostr(lsTablas.SelCount) + ' tablas?',
mtConfirmation, [mbno, mbyes], 0) = mryes then
begin
Screen.Cursor := crHourGlass;
bp.Min := 0;
bp.Max := lsTablas.SelCount -1;
//eliminamos todas las pestañas actuales del TabTablas
while tabTablas.PageCount > 0 do
tabTablas.ActivePage.Free;
//recorremos todas las tablas
for i := 0 to lsTablas.Count - 1 do
begin
//ejecutamos consulta SQL sólo para las seleccionadas
if lsTablas.Selected[i] then
begin
bp.Position := i;
tablaActual := lsTablas.Items[i];
camposTablaTexto := obtenerCamposTexto (tablaActual);
if (camposTablaTexto.Count > 0) then
begin
consultaSQL := obtenerSQLConsulta (camposTablaTexto, tablaActual, txtValorBuscar.Text);
if consultaSQL <> '' then
crearTabTablas(tablaActual, consultaSQL);
end;
end;
end;
Screen.Cursor := crDefault;
MessageDlg('Número de tablas con coincidencias: ' +
IntToStr(numTablas) + chr(13) +
'Número de coincidencias encontradas: ' +
IntToStr(numCoincidencias), mtInformation, [mbok], 0);
tabResultado.Show;
tabResultado.Refresh;
end;
end;
end;
end;
end;
Con el procedimiento crearTabTablas que te servirá de ejemplo:
Código:
procedure TformMenuPrincipal.crearTabTablas (nombreTabla : string; sqlEjecutar : string);
var
tabTmp : TTabSheet;
gridTmp : TDBGrid;
dataSTmp : TDataSource;
navTmp : TDBNavigator;
tcConsulta : TZReadOnlyQuery;
etiquetaTmp : TLabel;
begin
//creamos y ejecutamos la consulta SQL
tcConsulta := TZReadOnlyQuery.Create(nil);
tcConsulta.Close;
tcConsulta.Connection := bd;
tcConsulta.SQL.Clear;
tcConsulta.SQL.Add(sqlEjecutar);
try
tcConsulta.Open;
except
Screen.Cursor := crDefault;
raise;
end;
if tcConsulta.RecordCount > 0 then
begin
numCoincidencias := numCoincidencias + tcConsulta.RecordCount;
numTablas := numTablas + 1;
//Si se obtienen resultados creamos el TabSheet correspondiente a la tabla
tabTmp := TTabSheet.Create(tabTablas);
tabTmp.PageControl := tabTablas;
tabTmp.Name := 'tabTablas' + inttostr(tabTablas.PageCount);
tabTmp.Caption := nombreTabla;
//creamos un Label en la parte inferior del TabSheet para el número de coincidencias
etiquetaTmp := TLabel.Create(nil);
etiquetaTmp.Align := alBottom;
etiquetaTmp.Parent := tabTmp;
etiquetaTmp.Name := 'lbl' + tabTmp.Name;
etiquetaTmp.Caption := 'Número coincidencias tabla ' + nombreTabla + ': ' +
inttostr(tcConsulta.RecordCount);
//mostramos la pestaña (TabSheet)
tabTmp.Visible := true;
end
else
tcConsulta.Free;
end;
Publicado:
Dom Ago 22, 2010 7:03 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Bloc de Nota con Pestañas
Anuncios
En el siguiente post de este foro tienes también información sobre cómo trabajar con el componente PageControl (pestañas) en Delphi y en tiempo de ejecución:
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A