begin process at 2012 02 09 09:13:03
  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

Membre Club
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 Message erreur Corrupt Table/Index Header [ par rachid076 ] Bonjour; mon problème c que quand je veux ouvrir ma fiche, j'ai un message d'erreur: Corrupt Table/Index header remarque: je travaille avec le pa j'ai un probleme avec ce message [ par chirnobils ] bonjour j'ai un probleme a cette erreur qui indique a chaque fois que j'execute une application [Erreur fatale] Unit1.pas(6): Fichier non trouvé : 'Va delphi 2007 et 2010 [ par damygroover ] salut j'ai exécuter un projet en delphi 2007 et 2010 et j'ai obtenu l'erreur suivant: classe d'exception EDBEngineError avec un message 'une erreur message d'erreur "estackoverflow " [ par loulam ] bonjour, j'ai un message d'erreur "estackoverflow" sur l'evenement form.close;... qlq'un peut m'aider svp, doit je utiliser un destroy ou autre ???mer Thread.terminated génère une erreur [ par Gerard ] Bonjour, Mon appli (un serveur multi-thread) génère quelquefois (rarement de l'ordre d'une ou deux fois par semaine), une charge anormale du processe Ou est l'erreur ? [ par ferdo ] bonjour a tous Ou est l'erreur svp ?? begin IF calendrier then calendrier := false; Label6.Caption := 'Calendrier ' ; else begin message d'erreur [ par houhou72 ] message d'erreur s'affiche impossible de creer le fichier de sortie unit1.dcu Erreur irrémédiable [ par eric4343 ] Bonjour, Je développe une application pour une association caritative. L'architecture est la suivante : PC sous XP Serveur mysql installé Conect


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,714 sec (3)

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