cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 15 déc. 2004 à 16:02
J' ai déjà essayé déja:
Pour tous les Floats, la valeur est la même alors que j' ai des floats de taille differente par ex:
Champ TVA 3N1
Champ Valeur 7N2
Donc, dans cet exemple, la colonne TVA dans une DBGrid n' a besoin de montrer que de 5 caracteres (avec la virgule) alors que la colonne Valeur a besoin de montrer 10 caracteres. Donc, la colonne valeur a besoin d' etre 2 fois plus grande.
C' est un probleme qui me hante depuis quelques années déjà et personne ne sait comment récupérer la structure d' un float alors que Database Desktop te montre ça ...
Aller continuons de chercher :-)
jmp77
Messages postés1119Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention 4 octobre 20067 15 déc. 2004 à 15:20
Eh sinon je viens de trouver ça :
Showmessage(TableCalculs1.Fields.Fields[13].FieldName + ' = ' + IntToStr(TableCalculs1.Fields.Fields[13].DisplayWidth));
Quand penserais tu?
jmp77
Messages postés1119Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention 4 octobre 20067 15 déc. 2004 à 15:14
Ouais je comprens bien le souci. Je viens de regarder un peu dans l'aide et il précise bien que la propriété size n'est valable que pour ces types de champs :
ftBCD Size indique le nombre de chiffres après le séparateur décimal.
ftString Size indique le nombre maximum de caractères dans la chaîne.
ftVarBytes Size indique le nombre maximum d'octets de données sans compter les deux premiers octets indiquant le nombre réel d'octets utilisés.
ftBytes Size indique le nombre maximum d'octets de données.
ftBlob Size indique le nombre d'octets du BLOB stockés dans le tampon de l'enregistrement.
ftDBaseOle Size indique le nombre d'octets du champ OLE BLOB dBASE stockés dans le tampon de l'enregistrement.
ftFMTBCD Size indique le nombre de chiffres après le séparateur décimal.
ftFmtMemo Size indique le nombre d'octets du mémo stockés dans le tampon de l'enregistrement.
ftGraphic Size indique le nombre d'octets de l'image stockés dans le tampon de l'enregistrement.
ftMemo Size indique le nombre d'octets du mémo stockés dans le tampon de l'enregistrement.
ftParadoxOle Size indique le nombre d'octets du champ OLE BLOB Paradox stockés dans le tampon de l'enregistrement.
ftTypedBinary Size indique le nombre d'octets du BLOB stockés dans le tampon de l'enregistrement.
ftADT Size indique le nombre total de champs contenus dans le champ ADT, y compris les champs des champs enfant de type ADT.
ftArray Size est le nombre d'éléments du tableau.
Maintenant peut etre que la propriété datasize pourrait fonctionner pour les autres types de champs?
Qu'en penses tu Mauricio?
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 15 déc. 2004 à 15:03
Merci à toi jmp77 !
Voilà un petit coup de mains:
procedure PROPRIEDADES_TABELA(Tabela: TTable; CamposParaIndexo: TStrings);
var _Inc, i: Integer;
Tipo: String;
begin
FrmProp := TFrmProp.Create(Nil);
FrmProp.LBIndex.Items.Clear;
FrmProp.TabProp := Tabela;
FrmProp.TabProp.IndexDefs.Update;
for i := 0 To FrmProp.TabProp.IndexDefs.Count - 1 Do
If FrmProp.TabProp.IndexDefs[i].Name <> ''
Then TStringAdd(FrmProp.LBIndex.Items, FrmProp.TabProp.IndexDefs[i].Name, False, True)
Else TStringAdd(FrmProp.LBIndex.Items, FrmProp.TabProp.IndexDefs[i].FieldExpression, False, True);
for i := 0 to FrmProp.TabProp.FieldCount-1 do
begin
FrmProp.StringGrid1.RowCount := FrmProp.StringGrid1.RowCount + _Inc;
_Inc := 1;
Case FrmProp.TabProp.Fields[i].DataType Of
ftString: Tipo := 'String';
ftSmallint: Tipo := 'Smallint';
ftInteger: Tipo := 'Integer';
ftWord: Tipo := 'Word';
ftAutoInc: Tipo := 'AutoInc';
ftBoolean: Tipo := 'Boolean';
ftFloat: Tipo := 'Float';
ftCurrency: Tipo := 'Currency';
ftTime: Tipo := 'Time';
ftDate: Tipo := 'Date';
ftDateTime: Tipo := 'DateTime';
ftBytes: Tipo := 'Bytes';
ftVarBytes: Tipo := 'VarBytes';
ftBlob: Tipo := 'Blob';
ftMemo: Tipo := 'Memo';
ftFmtMemo: Tipo := 'FmtMemo';
ftGraphic: Tipo := 'Graphic';
ftWideString: Tipo := 'WideString';
ftLargeint: Tipo := 'Largeint';
Else Tipo := 'sconhecido';
End;
Case FrmProp.TabProp.Fields[i].DataType Of
ftString : FrmProp.StringGrid1.Cells[2, FrmProp.StringGrid1.RowCount - 1] := IntToStr(FrmProp.TabProp.Fields[i].Size);
ftFloat : begin
FrmProp.StringGrid1.Cells[2, FrmProp.StringGrid1.RowCount - 1] := IntToStr(FrmProp.TabProp.Fields[i].Size);
// FrmProp.StringGrid1.Cells[2, FrmProp.StringGrid1.RowCount - 1] := IntToStr(FrmProp.TabProp.FieldList[i].Size);
end;
End;
end;
FrmProp.ShowModal;
FrmProp.Release;
end;
Comme tu peux le voir, pas moyen de récupérer la taille des floats genre 7N2 ou 4N1 etc ...
jmp77
Messages postés1119Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention 4 octobre 20067 15 déc. 2004 à 14:21
Effectivement je suis daccord avec toi Mauricio c'est d'ailleurs mon cas j'ai des bases avec 200 colonnes et plus de 5000 enregistrements et je n'utilise pas cette fonction à cause du temps d'execution. Cette solution est viable pour une petite base. Enfin si quelqu'un trouve une solution plus rapide ca pourrais etre sympa. Je vais essayer de regarder la question.
Allez bonne prog,
JMP77.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 15 déc. 2004 à 13:15
J' ai oublié de vous dire un truc hyper important :
Il existe un parametre de ma fonction qui s' appelle 'Update_Num'.
A quoi ça sert?
Et bien vous mettez '1' comme valeur par exemple ...
Si vous faites une nouvelle version de votre programme avec plus de colonnes dans la DBGrid ou certains champs n' ont pas le meme nom, ça va planter!!!
Et bien si vous changer les colonnes de la DBGrid en design time, vous changer la valeur de Update_Num à '2' par exemple.
Ça va reinicialiser le fichier Ini et donc, pas de bug !
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 15 déc. 2004 à 12:41
Merci à tous!
Alors sinon, jmp77, ton code de redimensionnement des colonnes serait parfait si: tu ne parcoure pas le fichier d' un bout à l' autre, et en plus pour chaque colonne !!!
Si tu as des milliers de registres, je te dis meme pas le temps que ça mettrai!!!
Mais c une bonne idée et ta méthode pour savoir la taille du texte celle que j' utilise dans d' autre cas (montrer du texte sur un canvas, c utile pour centrer du texte !!!).
Par contre il est possible de récupérer la taille de tous les champs, mais j' ai jamais réussit à savoir pour les floats la taille de l' entier et la taille de la partie décimale :-(
J' avais mis un post sur le forum à ce sujet dont DelphiProg m' a répondu, mais sa réponse ne me donnait pas la taille des floats que je l' ai expliqué plus haut, si qqu' un sait comment, merci d' avance les gars !!!
jmp77
Messages postés1119Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention 4 octobre 20067 15 déc. 2004 à 11:59
Et bien merci mauricio encore un super code source qui va rendre service à pas mal de monde.
Note final : 10/10.
Juste une petite remarque (il en faut toujours une lol) tu pourrais ajouter la fonction qui permet de redimensionner les colonnes automatiquement en fonction des données. Voici le code si ca te dit :
procedure ResizeColumns();
var
J,MaxTextWidth, fieldwith : Integer;
begin
// On fait toutes les colonnes du TDBGrid
For J:=0 to Form1.GridFic.FieldCount-1 do
begin
// Initialisation
MaxTextWidth := 0;
// On recupere la longueur la plus grande contenu dans la colonne
Form1.GridFic.DataSource.DataSet.First;
while not form1.GridFic.DataSource.DataSet.Eof do
begin
fieldwith := Form1.GridFic.Canvas.TextWidth(form1.GridFic.datasource.DataSet.Fields.Fields[J].AsString);
if (fieldwith > MaxTextWidth) then MaxTextWidth := fieldwith;
Form1.GridFic.DataSource.DataSet.Next;
end;
// On applique la nouvelle taille a condition que la colonne n'était pas vide
If MaxTextWidth > 0 then form1.GridFic.Columns[J].Width := MaxTextWidth + 20;
end;
end;
Bonne journée et bonne prog,
JMP.
Merci également à delphiprog pour cette remarque car elle va me servir aussi.
Inekman
Messages postés291Date d'inscriptiondimanche 2 février 2003StatutMembreDernière intervention30 juin 2006 15 déc. 2004 à 11:44
Je me suis cassé la tête la dernière fois en cours à chercher comment faire pour colorer une colonne d'un DBGrid :-|
Et là, Mauricio me pond un source qui explique comment ça marche...elle est pas belle la vie ;-)
Mauricio, actif comme personne ces derniers jours, nous a fait un super code source ici.
Big bravo man.
Inekman.9/10
ps : -1 à cause du bricolage pour la sauvegarde/le chargement des compo...:-D mais sache que t'as mon 10/10 sur ce source.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 15 déc. 2004 à 10:59
Ok, y' a pas photo!
La solution de DelphiProg est bien plus rapide !!
5 fois plus précisemment ...
Je garde quand même ma fonction qui est utilisée un peu partout pour les raisons cités plus haut...
Mais je vais commencer à utiliser ReadComponentResFile(GridFile, DbGrid1) pour les autres cas!
DelphiProg, t' aurais pas une idée si par exemple je voulais garder la config de plusieurs compos dans le meme fichier ??? Parce que j' ai un programme de vente au balcon avec l' interface 'programmable' par l' utilisateur. Et j' ai un fichier de config pour garder ces infos (j' utilise d' ailleurs ma fonction pour sauver mes dbgrids), et certaines interfaces sont déjà pré-programmées et l' utilisateur peut les modifier/charger/enregistrer sous etc ....
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 15 déc. 2004 à 10:26
Merci en tout cas pour cette info !
Bon, je ne connaissait pas cette méthode :-)
De toute façon, ma source permet dans le cas d' avoir plusieurs DBGrids, de sauvegarder l' aspect dans le meme fichier Ini... Mais je vais essayer ReadComponentResFile(GridFile, DbGrid1);
pour voir, merci!
PS: j' ai mis l' explication de chaque fonction en commentaire, désolé mais je peux pas renommer les variables etc ... parce que manque de temps ...
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 14 déc. 2004 à 23:38
Salut Mauricio,
Ton code est pas mal mais on oublie encore trop souvent les capacités de sérialisation des descendant de la classe TPersistent.
Dans le cas d'un TDbGrid, pour sauvegarder et restaurer l'aspect visuel, je trouve qu'il y a beaucoup plus simple :
const
GridFile = 'grid.def';
procedure TForm1.FormCreate(Sender: TObject);
begin
if FileExists(GridFile) then
ReadComponentResFile(GridFile, DbGrid1);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
WriteComponentResFile(GridFile, DbGrid1);
end;
J'attire toutefois l'attention sur le fait que ce code ne fonctionnera pleinement qu'avec des colonnes persistentes pour tout ce qui concerne l'aspect des données. Pour ce qui touche à l'apparence du composant lui-même, là il n'y a aucun problème.
Je vais quand même regarder le reste de tes fonctions bien qu'il faille faire un effort de traduction...
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 14 déc. 2004 à 18:37
Attention tout de meme au caractere separateur !
Si vous utiliser par ex. le caractere #27, et si vous n' avez aucun Field attribué à la colonne 0 (moi je fais ça pour montrer une icone dans la 1ere colonne selon certains parametres pour chaque record), ça va foiré dans le fichier Ini. N' utiliser pas non plus le caractere 'Enter'. Sinon, c' est du tout bon.
Ps: On put aussi laisser l' utilisateur changer le caption des titres etc ... bref, regardez la fontion pour plus de détailles :-)
15 déc. 2004 à 16:02
Pour tous les Floats, la valeur est la même alors que j' ai des floats de taille differente par ex:
Champ TVA 3N1
Champ Valeur 7N2
Donc, dans cet exemple, la colonne TVA dans une DBGrid n' a besoin de montrer que de 5 caracteres (avec la virgule) alors que la colonne Valeur a besoin de montrer 10 caracteres. Donc, la colonne valeur a besoin d' etre 2 fois plus grande.
C' est un probleme qui me hante depuis quelques années déjà et personne ne sait comment récupérer la structure d' un float alors que Database Desktop te montre ça ...
Aller continuons de chercher :-)
15 déc. 2004 à 15:20
Showmessage(TableCalculs1.Fields.Fields[13].FieldName + ' = ' + IntToStr(TableCalculs1.Fields.Fields[13].DisplayWidth));
Quand penserais tu?
15 déc. 2004 à 15:14
ftBCD Size indique le nombre de chiffres après le séparateur décimal.
ftString Size indique le nombre maximum de caractères dans la chaîne.
ftVarBytes Size indique le nombre maximum d'octets de données sans compter les deux premiers octets indiquant le nombre réel d'octets utilisés.
ftBytes Size indique le nombre maximum d'octets de données.
ftBlob Size indique le nombre d'octets du BLOB stockés dans le tampon de l'enregistrement.
ftDBaseOle Size indique le nombre d'octets du champ OLE BLOB dBASE stockés dans le tampon de l'enregistrement.
ftFMTBCD Size indique le nombre de chiffres après le séparateur décimal.
ftFmtMemo Size indique le nombre d'octets du mémo stockés dans le tampon de l'enregistrement.
ftGraphic Size indique le nombre d'octets de l'image stockés dans le tampon de l'enregistrement.
ftMemo Size indique le nombre d'octets du mémo stockés dans le tampon de l'enregistrement.
ftParadoxOle Size indique le nombre d'octets du champ OLE BLOB Paradox stockés dans le tampon de l'enregistrement.
ftTypedBinary Size indique le nombre d'octets du BLOB stockés dans le tampon de l'enregistrement.
ftADT Size indique le nombre total de champs contenus dans le champ ADT, y compris les champs des champs enfant de type ADT.
ftArray Size est le nombre d'éléments du tableau.
Maintenant peut etre que la propriété datasize pourrait fonctionner pour les autres types de champs?
Qu'en penses tu Mauricio?
15 déc. 2004 à 15:03
Voilà un petit coup de mains:
procedure PROPRIEDADES_TABELA(Tabela: TTable; CamposParaIndexo: TStrings);
var _Inc, i: Integer;
Tipo: String;
begin
FrmProp := TFrmProp.Create(Nil);
FrmProp.LBIndex.Items.Clear;
FrmProp.TabProp := Tabela;
FrmProp.LBCamposParaIndexo.Items := CamposParaIndexo;
FrmProp.TabProp.IndexDefs.Update;
for i := 0 To FrmProp.TabProp.IndexDefs.Count - 1 Do
If FrmProp.TabProp.IndexDefs[i].Name <> ''
Then TStringAdd(FrmProp.LBIndex.Items, FrmProp.TabProp.IndexDefs[i].Name, False, True)
Else TStringAdd(FrmProp.LBIndex.Items, FrmProp.TabProp.IndexDefs[i].FieldExpression, False, True);
_Inc := 0;
FrmProp.StringGrid1.Cells[0, 0] := 'Campo';
FrmProp.StringGrid1.Cells[1, 0] := 'Tipo';
FrmProp.StringGrid1.Cells[2, 0] := 'Tam.';
FrmProp.StringGrid1.Cells[3, 0] := 'Dec.';
for i := 0 to FrmProp.TabProp.FieldCount-1 do
begin
FrmProp.StringGrid1.RowCount := FrmProp.StringGrid1.RowCount + _Inc;
_Inc := 1;
Case FrmProp.TabProp.Fields[i].DataType Of
ftString: Tipo := 'String';
ftSmallint: Tipo := 'Smallint';
ftInteger: Tipo := 'Integer';
ftWord: Tipo := 'Word';
ftAutoInc: Tipo := 'AutoInc';
ftBoolean: Tipo := 'Boolean';
ftFloat: Tipo := 'Float';
ftCurrency: Tipo := 'Currency';
ftTime: Tipo := 'Time';
ftDate: Tipo := 'Date';
ftDateTime: Tipo := 'DateTime';
ftBytes: Tipo := 'Bytes';
ftVarBytes: Tipo := 'VarBytes';
ftBlob: Tipo := 'Blob';
ftMemo: Tipo := 'Memo';
ftFmtMemo: Tipo := 'FmtMemo';
ftGraphic: Tipo := 'Graphic';
ftWideString: Tipo := 'WideString';
ftLargeint: Tipo := 'Largeint';
Else Tipo := 'sconhecido';
End;
FrmProp.StringGrid1.Cells[0, FrmProp.StringGrid1.RowCount - 1] := FrmProp.TabProp.Fields[i].FieldName;
FrmProp.StringGrid1.Cells[1, FrmProp.StringGrid1.RowCount - 1] := Tipo;
Case FrmProp.TabProp.Fields[i].DataType Of
ftString : FrmProp.StringGrid1.Cells[2, FrmProp.StringGrid1.RowCount - 1] := IntToStr(FrmProp.TabProp.Fields[i].Size);
ftFloat : begin
FrmProp.StringGrid1.Cells[2, FrmProp.StringGrid1.RowCount - 1] := IntToStr(FrmProp.TabProp.Fields[i].Size);
// FrmProp.StringGrid1.Cells[2, FrmProp.StringGrid1.RowCount - 1] := IntToStr(FrmProp.TabProp.FieldList[i].Size);
end;
End;
end;
FrmProp.ShowModal;
FrmProp.Release;
end;
Comme tu peux le voir, pas moyen de récupérer la taille des floats genre 7N2 ou 4N1 etc ...
15 déc. 2004 à 14:21
Allez bonne prog,
JMP77.
15 déc. 2004 à 13:15
Il existe un parametre de ma fonction qui s' appelle 'Update_Num'.
A quoi ça sert?
Et bien vous mettez '1' comme valeur par exemple ...
Si vous faites une nouvelle version de votre programme avec plus de colonnes dans la DBGrid ou certains champs n' ont pas le meme nom, ça va planter!!!
Et bien si vous changer les colonnes de la DBGrid en design time, vous changer la valeur de Update_Num à '2' par exemple.
Ça va reinicialiser le fichier Ini et donc, pas de bug !
15 déc. 2004 à 12:41
Alors sinon, jmp77, ton code de redimensionnement des colonnes serait parfait si: tu ne parcoure pas le fichier d' un bout à l' autre, et en plus pour chaque colonne !!!
Si tu as des milliers de registres, je te dis meme pas le temps que ça mettrai!!!
Mais c une bonne idée et ta méthode pour savoir la taille du texte celle que j' utilise dans d' autre cas (montrer du texte sur un canvas, c utile pour centrer du texte !!!).
Par contre il est possible de récupérer la taille de tous les champs, mais j' ai jamais réussit à savoir pour les floats la taille de l' entier et la taille de la partie décimale :-(
J' avais mis un post sur le forum à ce sujet dont DelphiProg m' a répondu, mais sa réponse ne me donnait pas la taille des floats que je l' ai expliqué plus haut, si qqu' un sait comment, merci d' avance les gars !!!
15 déc. 2004 à 11:59
Note final : 10/10.
Juste une petite remarque (il en faut toujours une lol) tu pourrais ajouter la fonction qui permet de redimensionner les colonnes automatiquement en fonction des données. Voici le code si ca te dit :
procedure ResizeColumns();
var
J,MaxTextWidth, fieldwith : Integer;
begin
// On fait toutes les colonnes du TDBGrid
For J:=0 to Form1.GridFic.FieldCount-1 do
begin
// Initialisation
MaxTextWidth := 0;
// On recupere la longueur la plus grande contenu dans la colonne
Form1.GridFic.DataSource.DataSet.First;
while not form1.GridFic.DataSource.DataSet.Eof do
begin
fieldwith := Form1.GridFic.Canvas.TextWidth(form1.GridFic.datasource.DataSet.Fields.Fields[J].AsString);
if (fieldwith > MaxTextWidth) then MaxTextWidth := fieldwith;
Form1.GridFic.DataSource.DataSet.Next;
end;
// On applique la nouvelle taille a condition que la colonne n'était pas vide
If MaxTextWidth > 0 then form1.GridFic.Columns[J].Width := MaxTextWidth + 20;
end;
end;
Bonne journée et bonne prog,
JMP.
Merci également à delphiprog pour cette remarque car elle va me servir aussi.
15 déc. 2004 à 11:44
Et là, Mauricio me pond un source qui explique comment ça marche...elle est pas belle la vie ;-)
Mauricio, actif comme personne ces derniers jours, nous a fait un super code source ici.
Big bravo man.
Inekman.9/10
ps : -1 à cause du bricolage pour la sauvegarde/le chargement des compo...:-D mais sache que t'as mon 10/10 sur ce source.
15 déc. 2004 à 10:59
La solution de DelphiProg est bien plus rapide !!
5 fois plus précisemment ...
Je garde quand même ma fonction qui est utilisée un peu partout pour les raisons cités plus haut...
Mais je vais commencer à utiliser ReadComponentResFile(GridFile, DbGrid1) pour les autres cas!
DelphiProg, t' aurais pas une idée si par exemple je voulais garder la config de plusieurs compos dans le meme fichier ??? Parce que j' ai un programme de vente au balcon avec l' interface 'programmable' par l' utilisateur. Et j' ai un fichier de config pour garder ces infos (j' utilise d' ailleurs ma fonction pour sauver mes dbgrids), et certaines interfaces sont déjà pré-programmées et l' utilisateur peut les modifier/charger/enregistrer sous etc ....
15 déc. 2004 à 10:26
Bon, je ne connaissait pas cette méthode :-)
De toute façon, ma source permet dans le cas d' avoir plusieurs DBGrids, de sauvegarder l' aspect dans le meme fichier Ini... Mais je vais essayer ReadComponentResFile(GridFile, DbGrid1);
pour voir, merci!
PS: j' ai mis l' explication de chaque fonction en commentaire, désolé mais je peux pas renommer les variables etc ... parce que manque de temps ...
14 déc. 2004 à 23:38
Ton code est pas mal mais on oublie encore trop souvent les capacités de sérialisation des descendant de la classe TPersistent.
Dans le cas d'un TDbGrid, pour sauvegarder et restaurer l'aspect visuel, je trouve qu'il y a beaucoup plus simple :
const
GridFile = 'grid.def';
procedure TForm1.FormCreate(Sender: TObject);
begin
if FileExists(GridFile) then
ReadComponentResFile(GridFile, DbGrid1);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
WriteComponentResFile(GridFile, DbGrid1);
end;
J'attire toutefois l'attention sur le fait que ce code ne fonctionnera pleinement qu'avec des colonnes persistentes pour tout ce qui concerne l'aspect des données. Pour ce qui touche à l'apparence du composant lui-même, là il n'y a aucun problème.
Je vais quand même regarder le reste de tes fonctions bien qu'il faille faire un effort de traduction...
14 déc. 2004 à 18:37
Si vous utiliser par ex. le caractere #27, et si vous n' avez aucun Field attribué à la colonne 0 (moi je fais ça pour montrer une icone dans la 1ere colonne selon certains parametres pour chaque record), ça va foiré dans le fichier Ini. N' utiliser pas non plus le caractere 'Enter'. Sinon, c' est du tout bon.
Ps: On put aussi laisser l' utilisateur changer le caption des titres etc ... bref, regardez la fontion pour plus de détailles :-)