Hello,
first thanks to Sergey for his last answere (fix memo-table-cell-border-lines).
Now I want to clear (and center) memo-table.cells if they are empty or contain a 'x'.
Until I don't put a picture (vertical script as bmp) all okay (see below).
How can I prevent that in this case (cell contains a bmp-picture) cell is cleared?
Jürgen
for r := 0 to rveTable.Rows.Count-1 do begin
for c:=4 to 6 do begin
s:='';
if rveTable.Cells[r,c]<>nil then begin
rveTable.EditCell(r,c);
s:=ansiLowerCase(memo.TopLevelEditor.GetCurrentItemText);
if (s='') or (s='x') then begin
//s='' if cell contains a picture (bmp) <------------------
// in this case cell shall not be cleared <------------------
// How can I prevent that in this case cell is cleared?
rveTable.Cells[r,c].Clear; //löscht, aber zentriert nicht
rveTable.Cells[r,c].AddNL('',0,1); //damit zentriert
end; //if (s='') or
end; //if rveTable.Cells[r,c]
end; //for c:=4 to 6 do begin
end; //for r := 0 to rveTable.Rows.Count-1
don't clear cell if containing picture (bmp)
I have added one line (...GetPictureInfo(memo.TopLevelEditor.CurItemNo...):
if rveTable.Cells[r,c]<>nil then begin
rveTable.EditCell(r,c);
s:=ansiLowerCase(memo.TopLevelEditor.GetCurrentItemText);
if (s='') or (s='x') then begin
memo.TopLevelEditor.GetPictureInfo(memo.TopLevelEditor.CurItemNo,pname,pimg,palign,ptag);
rveTable.Cells[r,c].Clear;
rveTable.Cells[r,c].AddNL('',0,1);
end;
end;
Program stops in CRVData.pas (I have set a stop at the line below ...GetPictureInfo... )
procedure TCustomRVData.CheckItemClass(ItemNo: Integer; RequiredClass: TCustomRVItemInfoClass);
begin
if not (Items.Objects[ItemNo] is RequiredClass) then
raise ERichViewError.Create(errRVTypesMismatch);
end;
Can someone (?Sergey?) help me ?
Jürgen
if rveTable.Cells[r,c]<>nil then begin
rveTable.EditCell(r,c);
s:=ansiLowerCase(memo.TopLevelEditor.GetCurrentItemText);
if (s='') or (s='x') then begin
memo.TopLevelEditor.GetPictureInfo(memo.TopLevelEditor.CurItemNo,pname,pimg,palign,ptag);
rveTable.Cells[r,c].Clear;
rveTable.Cells[r,c].AddNL('',0,1);
end;
end;
Program stops in CRVData.pas (I have set a stop at the line below ...GetPictureInfo... )
procedure TCustomRVData.CheckItemClass(ItemNo: Integer; RequiredClass: TCustomRVItemInfoClass);
begin
if not (Items.Objects[ItemNo] is RequiredClass) then
raise ERichViewError.Create(errRVTypesMismatch);
end;
Can someone (?Sergey?) help me ?
Jürgen
-
- Site Admin
- Posts: 17559
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
GetPictureInfo can be called only for picture items. An exception occurs if this method is called for other types or items, such as text.
Type of item can be checked using GetItemStyle method. For text, it's zero or positive value. For picture, it is rvsPicture constant (negative).
Also, it's not necessary to initialize editing for cells, it slows down the execution a lot.
Type of item can be checked using GetItemStyle method. For text, it's zero or positive value. For picture, it is rvsPicture constant (negative).
Also, it's not necessary to initialize editing for cells, it slows down the execution a lot.
Code: Select all
for r := 0 to rveTable.Rows.Count-1 do begin
for c:=4 to 6 do begin
s:='';
if rveTable.Cells[r,c]<>nil then begin
s:=ansiLowerCase(rveTable.Cells[r,c].GetRVData.GetItemTextA(0));
if (rveTable.Cells[r,c].GetRVData.GetItemStyle(0)>=0) and
((s='') or (s='x')) then begin
rveTable.Cells[r,c].GetRVData.Clear; //löscht, aber zentriert nicht
rveTable.Cells[r,c].GetRVData.AddNL('',0,1); //damit zentriert
end; //if
end; //if rveTable.Cells[r,c]
end; //for c:=4 to 6 do begin
end; //for r := 0 to rveTable.Rows.Count-1
don't clear cell if containing picture (bmp)
Thank you, Sergey
Jürgen
Jürgen