Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Bloc de Nota con Pestañas
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Bloc de Nota con Pestañas

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
davsoft
Usuario


Registrado: Jul 08, 2010
Mensajes: 3

Asunto: Bloc de Nota con Pestañas Responder citando

Hola amigos he creado un bloc de notas y quisiera me trabajara por pestañas como el NotePad como pudiera hacer esto

saludos

David
MensajePublicado:
Dom Ago 22, 2010 3:59 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Bloc de Nota con Pestañas Responder citando



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:

http://www.ajpdsoft.com/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=265

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);

    //creamos el DataSource
    dataSTmp := TDataSource.Create(nil);
    dataSTmp.DataSet := tcConsulta;
    dataSTmp.Name := 'dts' + tabTmp.Name;

    //creamos el Navigator
    navTmp := TDBNavigator.Create(nil);
    navTmp.Align := alTop;
    navTmp.Parent := tabTmp;
    navTmp.Flat := true;
    navTmp.VisibleButtons := [nbFirst,nbPrior,nbNext,nbLast,nbRefresh];
    navTmp.Cursor := crHandPoint;
    navTmp.Name := 'nav' + tabTmp.Name;
    navTmp.DataSource := dataSTmp;

    //cremos el DBGrid
    gridTmp := TDBGrid.Create(nil);
    gridTmp.Align := alClient;
    gridTmp.Parent := tabTmp;
    gridTmp.Name := 'grid' + tabTmp.Name;
    gridTmp.DataSource := dataSTmp;

    //mostramos la pestaña (TabSheet)
    tabTmp.Visible := true;
  end
  else
    tcConsulta.Free;
end;
MensajePublicado:
Dom Ago 22, 2010 7:03 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Bloc de Nota con Pestañas Responder citando



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:

http://www.ajpdsoft.com/modules.php?name=Foros&file=viewtopic&t=1034
MensajePublicado:
Dom Ago 22, 2010 7:04 pm
Top of PageVer perfil de usuario
davsoft
Usuario


Registrado: Jul 08, 2010
Mensajes: 3

Asunto: Note con Pestaña Responder citando

Hola amigo, me ayudo muchisimo los datos que me distes estoy trabajando en eso, aunque tengo que modificar bastate codigo con el trabajo con pestaña.

saludos

David
MensajePublicado:
Lun Ago 23, 2010 11:19 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  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
Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+