 |
BorlandTalk.com Borland discussion newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Renato A. Martins Guest
|
Posted: Tue Oct 07, 2003 11:59 am Post subject: Error with TFieldDataLink: EStackoverflow |
|
|
Hi, I am with a problem, when i insert a new record in the dataset, he
return a error menssage in procedure:
procedure TMySqlCheckBox.OnDataChange(Sender: TObject);
begin
if FDataLink.Field.IsNull then
checked:=false
else
checked:=true;
end;
the procedure run normaly, but when i insert a new record, he return the
menssage "Stack overflow".
|
|
| Back to top |
|
 |
Robert Cerny Guest
|
Posted: Tue Oct 07, 2003 11:27 pm Post subject: Re: Error with TFieldDataLink: EStackoverflow |
|
|
Setting Checked property somehow re-triggers OnDataChange.
--
Robert Cerny
DelphiShaman
"Renato A. Martins" <renato (AT) inoutnet (DOT) com.br> wrote
| Quote: | Hi, I am with a problem, when i insert a new record in the dataset, he
return a error menssage in procedure:
procedure TMySqlCheckBox.OnDataChange(Sender: TObject);
begin
if FDataLink.Field.IsNull then
checked:=false
else
checked:=true;
end;
the procedure run normaly, but when i insert a new record, he return the
menssage "Stack overflow".
|
|
|
| Back to top |
|
 |
Renato A. Martins Guest
|
Posted: Mon Oct 13, 2003 2:44 pm Post subject: Re: Error with TFieldDataLink: EStackoverflow |
|
|
But this component is have the ancestor Tcheckbox and not TDBcheckbox. The
event OnDataChange is create for me. look the resumed code:
type
TMySqlCheckBox = class(TCheckBox)
constructor TMySqlCheckBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FDataLink := TFieldDataLink.Create;
FDataLink.OnDataChange := OnDataChange;
end;
procedure TMySqlCheckBox.OnDataChange(Sender: TObject);
begin
if FDataLink.Field.IsNull then
checked:=false
else
checked:=true;
end;
procedure TMySqlCheckBox.Click;
begin
if (datasource.dataset.state=dsinsert) or
(datasource.dataset.state=dsedit) then
begin
if datasource.dataset.fieldbyname(datafield).asstring='X' then
datasource.dataset.fieldbyname(datafield).asstring:=''
else
datasource.dataset.fieldbyname(datafield).asstring:='X';
end
else
begin
if datasource.dataset.fieldbyname(datafield).asstring='X' then
checked:=true
else
checked:=false;
end;
end;
----- Original Message -----
From: "Robert Cerny" <robert.qwe.cerny (AT) neosys (DOT) xrs.qwe.si>
Newsgroups: borland.public.delphi.vcl.components.writing
Sent: Tuesday, October 07, 2003 8:27 PM
Subject: Re: Error with TFieldDataLink: EStackoverflow
| Quote: | Setting Checked property somehow re-triggers OnDataChange.
--
Robert Cerny
DelphiShaman
"Renato A. Martins" <renato (AT) inoutnet (DOT) com.br> wrote in message
news:3f82aa6a (AT) newsgroups (DOT) borland.com...
|
|
|
| Back to top |
|
 |
Robert Cerny Guest
|
Posted: Tue Oct 14, 2003 12:53 pm Post subject: Re: Error with TFieldDataLink: EStackoverflow |
|
|
If you want to reinvent the wheel, do it properly.
Also:
..asstring:='' sets is to empty string, while OnDataChange checks for
..IsNull.
--
Robert Cerny
DelphiShaman
"Renato A. Martins" <renato (AT) inoutnet (DOT) com.br> wrote
| Quote: | But this component is have the ancestor Tcheckbox and not TDBcheckbox. The
event OnDataChange is create for me. look the resumed code:
type
TMySqlCheckBox = class(TCheckBox)
constructor TMySqlCheckBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FDataLink := TFieldDataLink.Create;
FDataLink.OnDataChange := OnDataChange;
end;
procedure TMySqlCheckBox.OnDataChange(Sender: TObject);
begin
if FDataLink.Field.IsNull then
checked:=false
else
checked:=true;
end;
procedure TMySqlCheckBox.Click;
begin
if (datasource.dataset.state=dsinsert) or
(datasource.dataset.state=dsedit) then
begin
if datasource.dataset.fieldbyname(datafield).asstring='X' then
datasource.dataset.fieldbyname(datafield).asstring:=''
else
datasource.dataset.fieldbyname(datafield).asstring:='X';
end
else
begin
if datasource.dataset.fieldbyname(datafield).asstring='X' then
checked:=true
else
checked:=false;
end;
end;
|
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|