4 pièce(s) jointe(s)
Créer un Livebinding au runtime
Bonjour,
suite à la constation d'un bug depuis la version 10.4.2 que j'ai rapporté ici https://quality.embarcadero.com/browse/RSP-33360 et qui a empiré avec D11 (c'est carrément le PC qui freeze) j'ai tenté de créer un programme de démonstration légérement différent, l'objectif étant de trouver quand cela plante.
Pièce jointe 605769
je suis parti sur l'idée de créer le lien (ou plutôt l'expression) avec l'image au runtime
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| procedure TForm13.SwitchAddImageSwitch(Sender: TObject);
procedure addimage;
var ABind : TFormatExpressionItem;
begin
aBind:=Link2ListView.FillExpressions.AddExpression;
aBind.ControlMemberName:='Image';
aBind.SourceMemberName:='Graphic';
// Showmessage(aBind.Index.ToString); ok c'est bien 2
end;
procedure dropimage;
begin
Link2ListView.FillExpressions.Delete(2);
end;
begin
ListView1.BeginUpdate;
if SwitchAddImage.ischecked then addimage else dropimage;
SwitchOpenSwitch(Sender);
// Listview1.EndUpdate;
end;
procedure TForm13.SwitchOpenSwitch(Sender: TObject);
begin
ListView1.BeginUpdate;
ClientDataset1.Active:=False;
ClientDataset1.Active:=SwitchOpen.IsChecked;
ListView1.EndUpdate;
end; |
seulement, si cela ne fonctionne pas toujours
Pièce jointe 605772
dans cette première capture j'ai mis le switch addimage avant d'ouvrir la table :ccool: ça fonctionne et le resize aussi
Pièce jointe 605774
Mais
Pièce jointe 605773
si j'enlève l'image (toujours ok) puis tente de la remettre et là message d'erreur :weird:
J'ai certainement oublié un beginUpdate/endupdate quelque part mais sur quoi ?
A noter que dans ces cas là le resize fonctionne