• Viernes 19 de Abril de 2024, 20:17

Autor Tema:  Controles Delphi  (Leído 2241 veces)

JMAlonso

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Controles Delphi
« en: Miércoles 5 de Octubre de 2005, 01:20 »
0
Hola a todos.

Tengo una funcion en Visual Basic

For Each ctl In frm.Controls
        Set ctl.Font = fnt
        sCtlType = TypeName(ctl)
        If sCtlType = "Label" Then
            ctl.Caption = LoadResString(CInt(ctl.Tag) + intIdioma)
        ElseIf sCtlType = "Menu" Then
            Select Case CInt(ctl.Caption) + intIdioma
                Case 2
                       ctl.Caption = "&Salir"
                Case 3
                       ctl.Caption = "&Idioma"
                Case 10
                       ctl.Caption = "&Opciones de BDs."
                Case 11
                       ctl.Caption = "&Compactar BDs."
                Case 12
                       ctl.Caption = "Co&pia de Seguridad"
            End Select
           
        ElseIf sCtlType = "TabStrip" Then
            For Each obj In ctl.Tabs
                obj.Caption = LoadResString(CInt(obj.Tag) + intIdioma)
                obj.ToolTipText = LoadResString(CInt(obj.ToolTipText) + intIdioma)
            Next
        ElseIf sCtlType = "Toolbar" Then
            For Each obj In ctl.Buttons
                obj.ToolTipText = LoadResString(CInt(obj.Tag) + intIdioma)
            Next
        ElseIf sCtlType = "ListView" Then
            For Each obj In ctl.ColumnHeaders
                obj.Text = LoadResString(CInt(obj.Tag) + intIdioma)
            Next
        Else
            nVal = 0
            nVal = Val(ctl.Tag) + intIdioma
            If nVal > 0 Then ctl.Caption = LoadResString(nVal)
            nVal = 0
            nVal = Val(ctl.ToolTipText)
            If nVal > 0 Then ctl.ToolTipText = LoadResString(nVal)
        End If
    Next


la cual por cada tipo que exista le voy cambiando el idioma a cada control.Es
decir si en mi formulario tengo menus,botones,labels,etc con la instruccion
TypeName(ctl) me dice de que tipo es el control y en base a eso yo actuo.

Me gustaria saber si existe algo parecido en Delphi.
Por un lado si creamos un bucle
for i:=0 to componentcount - 1 do ,puedo saber cuantos componentes hay e

ir uno por uno recorriendolos.Lo que necesito saber es de que tipo son cada
uno.

Saludos.

bartolomeo

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Controles Delphi
« Respuesta #1 en: Miércoles 5 de Octubre de 2005, 17:15 »
0
Hola, nunca lo he hecho asi, pero mirate este codigo usa una funcion para desplazarce hacia delante y otra hacia atras.

Me alegra que participes activamente del foro  :comp: , Bienvenido   :hola:

Código: Text
  1. procedure TForm1.AdelanteExecute(Sender: TObject);
  2. begin
  3.   SelectNext(twincontrol(sender),true,true);
  4. end;
  5.  
  6. procedure TForm1.AtrasExecute(Sender: TObject);
  7. begin
  8.   SelectNext(twincontrol(sender),false,true);
  9. end;
  10.  
  11. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  12. begin
  13.   if (Key = #13) then
  14.   if (GetKeyState(VK_SHIFT) and $80 = 0) then
  15.   begin
  16.     key := #0;
  17.     AdelanteExecute(sender);
  18.   end else
  19.     AtrasExecute(sender);
  20. end;
  21.  

[size=109]Por que Rolo soy yo¡¡¡¡¡[/size]

JMAlonso

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: Controles Delphi
« Respuesta #2 en: Viernes 7 de Octubre de 2005, 00:58 »
0
Creo que como siempre no me he expresado bien.
Lo que necesito saber es dado un conjunto de objetos en mi formulario,menus,
botones,labels,etc.  como he dicho anteriormente con la instruccion
componentcount se cuantos objetos tiene mi formulario, pero ahora necesito
saber de que tipo son , es decir , si el component[1] es un menu o un boton, por
ejemplo.


Saludos.

JMAlonso

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: Controles Delphi
« Respuesta #3 en: Viernes 7 de Octubre de 2005, 01:04 »
0
Añadir que lo necesito saber en tiempo de ejecucion, evidentemente.

Ayla

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
    • http://www.clubdevelopers.com/foros/index.php
Re: Controles Delphi
« Respuesta #4 en: Viernes 7 de Octubre de 2005, 13:58 »
0
Hola.

Te paso un ejemplo de cómo lo podrías hacer, depende de lo que necesites saber, cambia el código:

Código: Text
  1.  
  2. for i := 0 to ComponentCount -1 do begin
  3.        if Components[i] is TDBEdit then
  4.          TDBEdit( Components[i] ).ReadOnly := True;
  5.        if Components[i] is TDBLookupComboBox then
  6.          TDBLookupComboBox( Components[i] ).ReadOnly := True;
  7.        if Components[i] is TDBMemo then
  8.          TDBMemo ( Components[i] ).ReadOnly := True;
  9.        if Components[i] is TMaskEdit then
  10.          TMaskEdit ( Components[i] ).ReadOnly := True;
  11.        if Components[i] is TDBCheckBox then
  12.          TDBCheckBox ( Components[i] ).ReadOnly := True;
  13.        if Components[i] is TDBRadioGroup then
  14.          TDBRadioGroup ( Components[i] ).ReadOnly := True;
  15.  end;
  16.  
  17.  


Espero que sea esto lo que buscas  :hola:
Y que mi luz te acompañe
pues la vida es un jardín
donde lo bueno y lo malo
se confunde y es humano
no siempre saber elegir.

Ayla Blog

JMAlonso

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: Controles Delphi
« Respuesta #5 en: Sábado 8 de Octubre de 2005, 07:39 »
0
Muchisimas gracias.No sabes el favor que me has hecho.

Gracias