begin process at 2010 02 09 14:41:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Aide et documentation

 > 

tableau dynamique TRadioButton erreur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

tableau dynamique TRadioButton erreur

vendredi 13 octobre 2006 à 12:27:06 | tableau dynamique TRadioButton erreur

retaks666

Salut à tous. J'ai un PageControl dans lequel je je créé dynamiquement des TTabSheet avec dedans un GroupBox et des RadiosButton.
j'ai donc des variables globales définies comme cela:
  tabsteps : array of TTabSheet;
  gbs : array of TGroupBox;
  rdb : array of array of TRadioButton;

La création des onglets et des TGroupBox se passe bien, mais lorsque je créé les radiobutton j'ai une erreur. Voici le code:

    for I := 0 to high(rdb[index]) - 1 do
         rdb[index][i].Free;

    setlength(rdb[index],0);

UIBQuery.SQL.Clear;
    UIBQuery.SQL.Text:='SELECT DISTINCT ' + fieldname + ' FROM "SEG$' + cmbtables.Text + '"';
    UIBQuery.Open();
    while not UIBQuery.Eof do
    begin
        i:=high(RDB[index]);

        if (i<0) then i:=0;
        setlength(RDB[index],i+1);

        showmessage(inttostr(i+1) + ' '  + inttostr(high(RDB[index]))); //obtiens 1 0
        RDB[index][i-1]:=TRadioButton.create(gbs[index]);
        showmessage(inttostr(i+1) + ' '  + inttostr(high(RDB[index]))); //obtiens 1 12525455
        RDB[index][i-1].Parent:=gbs[index];
        showmessage(inttostr(i+1) + ' '  + inttostr(high(RDB[index]))); //obtiens 1 12525455

        if not (high(RDB[index]) > 0) then //sauté car erreur avec le high
           RDB[index][0].Top :=20
        else
           RDB[index][i-1].Top :=RDB[index][i-2].Top + 30; //ici élément non accessible donc erreur d'accès mémoire

        RDB[index][i-1].Height:=20;
        RDB[index][i-1].left:=20;
        RDB[index][i-1].width:=gbs[index].Width-40;
        RDB[index][i-1].Visible:=true;
        RDB[index][i-1].Caption:=UIBQuery.Fields.AsString[0];

     if(UPPERCASE(fieldname)='"SEGMENTATION_NAME') then
     begin
            RDB[index][i-1].OnClick:=rdSegmentationclick;
     end;
    UIBQuery.Next;
    end;
    UIBQuery.Close();


L'erreur viens donc de la création du TRadioButton, mais je ne vois pas pourquoi ça ne marches pas, si quelqu'un a une solution je suis preneur !

vendredi 13 octobre 2006 à 12:51:02 | Re : tableau dynamique TRadioButton erreur

Jean_Jean

Bonjour,
Dommage, je ne peux pas tester ton code car je n'ai pas SQL!
Tu as essayé avec un autre type de contrôle comme des cases à cocher par exemple.
Oui, je sais, tu veux sans doute des radio-buttons, mais ça permettrait de voir que c'est bien le composant radiobutton qui est en cause.
Si ça marche avec les cases à cocher, c'est qu'il doit y avoir une propriété manquante ou non renseignée dans une classe intermédiaire dans la hiérarchie d'objet. Leur classe ancêtre commune est BoutonControl.
Tabsheet et Page Control sont plus éloignés dans la hiérarchie.
Je dis ça, mais c'est facile en théorie, ça serait mieux de tomber sur qlq qui a eu ce prob
Bien à toi
Jean_Jean
vendredi 13 octobre 2006 à 13:11:47 | Re : tableau dynamique TRadioButton erreur

retaks666

Apparement, ça ne changeais rien avec autrechose qu'un RadioButton, mais merci quand même :)
Bon j'ai modifié mon code, ça marche, mais j'ai pas la moindre idée du pouquoi...
(ce n'est pas les length, j'avias déja essayé)
Le voici pour ceux que ça intéresse:
procedure tfrmmain.loadradios(index:integer; fieldname : string);
var i : integer;
begin
    for I := 0 to high(rdb[index]) - 1 do
         rdb[index][i].Free;

    setlength(rdb[index],0);
    UIBQuery.SQL.Clear;
    UIBQuery.SQL.Text:='SELECT DISTINCT ' + fieldname + ' FROM "SEG$' + cmbtables.Text + '"';
    UIBQuery.Open();
    while not UIBQuery.Eof do
    begin
        i:=length(RDB[index]);

        if (i<0) then i:=0;
        setlength(RDB[index],i+1);

        RDB[index][i]:=TRadioButton.create(gbs[index]);
        //RDB[index][i].Parent:=tabsteps[index];

        RDB[index][i].Top :=30*(i+1);

        RDB[index][i].Height:=20;
        RDB[index][i].left:=20;
        RDB[index][i].width:=gbs[index].Width-40;
        RDB[index][i].Visible:=true;
        RDB[index][i].Caption:=UIBQuery.Fields.AsString[0];

     if(UPPERCASE(fieldname)='"SEGMENTATION_NAME') then
     begin
            RDB[index][i].OnClick:=rdSegmentationclick;
     end;
        RDB[index][i].parent:=GBS[index];

    UIBQuery.Next;
    end;
    UIBQuery.Close();
end;

samedi 14 octobre 2006 à 08:00:31 | Re : tableau dynamique TRadioButton erreur

f0xi

Membre Club Administrateur CodeS-SourceS

procedure tfrmmain.loadradios(index:integer; fieldname : string);
var i : integer;
begin
    for i := 0 to high(rdb[index]) do
        rdb[index,i].Free;
    setlength(rdb[index],0);
    with UIBQuery do begin
        SQL.Clear;
        SQL.Text := 'SELECT DISTINCT ' + fieldname + ' FROM "SEG$' + cmbtables.Text + '"';
        Open;
        i := 0;
        while not Eof do begin
            inc(i);
            setlength(RDB[index], i);
            RDB[index,i-1] := TRadioButton.create(gbs[index]);
            with RDB[index,i-1] do begin
                Top     := 30 * (i);
                Left    := 20;
                Width   := gbs[index].Width - 40;
                Height  := 20;
                Caption := UIBQuery.Fields.AsString[0];
                if UpperCase(fieldname) = '"SEGMENTATION_NAME' then
                   OnClick := rdSegmentationclick;
                parent  := gbs[index];
            end;
            Next;
        end;
        Close;
    end;   
end;



Croc (click me)


Cette discussion est classée dans : erreur, uibquery, index, rdb, high


Répondre à ce message

Sujets en rapport avec ce message

Erreur index avec TBatchMove [ par jstauffer ] Bonjour,je veux faire une mise à jour et ajout des enregistrements de la table 1 (paradox) vers la table 2 (Sql Server 2005) qui possède un index sur Indy SSL POP3 ou SMTP sans Form (dans une dll) : erreur sur IdSSLIOHandlerSocket dans le uses [ par vampirep ] Alors, j'utilise Indy 9, Delphi 6 (je débute dans ce language pour me faire une DLL)en gros lorsque le met IdSSLIOHandlerSocket dans le uses, j'ai une Installation Pack 2 Delphi 6 [ par JPL1 ] Bonjour à tous,J'essaie d'installé le pack 2 sur delphi 6 et j'ai un message d'erreur"Erreur lors de la copie de fichiers(Erreur -132)" Dans le fichie explication d un message d erreur !!! [ par khawarizm ] Bonsoir ou bonjour tout le monde !Je vous demande SVP si  quelqu'un voudrait bien  m expliquer la signification d'un  message que je trouve a chaque f Reindexation [ par LAFOURMIE ] Bonjours tout le mode .j'espere recevoir des réponse à mon sujet.voila:=j'utilise paradox comme base de données.lorsque je fait des sauvegardes de mon erreur dbexpress [ par kdidier51 ] bonjour,je souhaite transférer les enregistrements de tables dbase pour les mettre dans des tables Mysql. la structure du programme est la suivante : générateur de clé [ par fseh ] bonjour2ème partie du générateur de cléquestion 1l'index i commence à zéro, part2[i] modifie la longueur de la chaine ?question 2la longueur du string Erreur d'application [ par dunith ] Bonjour Quand j'execute(F9) mon projet JalonTE1; j'ai une erreur qui s'affiche: Exception EConvert dans le module JalonTE1.exe.quelq'un peut m'aider? pb index de grille hors limite [ par jerome57440 ] bonjour,je suis actuelement stagiaire dans un entreprise et je doit corriger les bugs du logiciel de pointagej'ai un petit probleme avec une partie de Refresh trop lent dans un composant [ par Francky23012301 ] Salut la compagnieJ'ai réalisé un petit composant  : Celui fonctionne très bien sauf qu'il est terriblement lent ce qui fait que le refresh de la fich


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,980 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales