to get all infos at the position of caret
Posted: Fri Apr 13, 2012 10:51 am
Hello,
I want to get all infos at the position of caret (which is in a memo or in a “memo-table”).
This was created under Vista, Delphi 7.1 and TDBRichViewEdit v13.9
Who can complete or finish or correct the following code ?
procedure TForm1.sbTesten1Click(Sender: TObject);
var fi: TFontInfo;
schrSchnitt,schrFarbe, hgFarbe, itemStil, paraStil: string;
r,c: integer;
begin
IgnoreChanges := True; // ???
fi := rvs.TextStyles[Memo.CurTextStyleNo];
IgnoreChanges := False; // ???
if fsBold in fi.Style then schrSchnitt:= 'fett, ';
if fsItalic in fi.Style then schrSchnitt:= schrSchnitt+'kursiv, ';
if fsUnderline in fi.Style then schrSchnitt:= schrSchnitt+'unterstrichen, ';
if fsStrikeOut in fi.Style then schrSchnitt:= schrSchnitt+'durchgestrichen';
if fi.Style= [] then schrSchnitt:= 'normal';
schrSchnitt:=str_DelE(schrSchnitt, #32); //löscht am Stringende: #32
schrSchnitt:=str_DelE(schrSchnitt, ','); //löscht am Stringende: ','
case fi.color of
0: schrFarbe:= 'schwarz';
255: schrFarbe:= 'rot';
16711680: schrFarbe:= 'blau';
536870911: schrFarbe:= 'weiß';
3252790: schrFarbe:= 'grün';
65280: schrFarbe:= 'hellgrün';
16711935: schrFarbe:= 'fuchsia';
65535: schrFarbe:= 'gelb';
13146423: schrFarbe:= 'türkis';
else schrFarbe:= intToStr(fi.color);
end;
case fi.backcolor of
0: hgFarbe:= 'schwarz';
255: hgFarbe:= 'rot';
16711680: hgFarbe:= 'blau';
536870911: hgFarbe:= 'weiß';
3252790: hgFarbe:= 'grün';
65280: hgFarbe:= 'hellgrün';
16711935: hgFarbe:= 'fuchsia';
65535: hgFarbe:= 'gelb';
13146423: hgFarbe:= 'türkis';
else hgFarbe:= intToStr(fi.backcolor);
end;
//---- GetItemStyle --------------------------------------------------------
//(* //muss dieses Splittung in Tabelle + Nicht-Tabelle sein ?
if memo.GetItemStyle(memo.CurItemNo)= -60 then begin
if memo.GetCurrentItemEx(TRVTableItemInfo, rve, TCustomRVItemInfo(rveTable)) then rveTable.GetEditedCell(r,c);
case rveTable.Cells[r,c].GetRVData.GetItemStyle(0) of
0: ItemStil:= 'normal text';
1: ItemStil:= 'Heading 1';
2: ItemStil:= 'Heading 2';
3: ItemStil:= 'Keywords';
4: ItemStil:= 'Hypertext 1';
5: ItemStil:= 'Hypertext 2';
6: ItemStil:= '6';
10: ItemStil:= 'normal';
11: ItemStil:= 'hochgestellt';
12: ItemStil:= '12';
13: ItemStil:= 'tiefgestellt';
-1: ItemStil:= 'break (horizontal line)';
-3: ItemStil:= 'picture';
-4: ItemStil:= 'hotspot (picture from ImageList - hyperlink)';
-5: ItemStil:= 'inserted Delphi control';
-6: ItemStil:= 'bullet (picture from ImageList)';
-10: ItemStil:= 'hot picture (picture - hyperlink)';
-11: ItemStil:= 'list marker (bullet or numbering of paragraphs)';
-12: ItemStil:= 'tabulator';
-60: ItemStil:= 'table';
-200: ItemStil:= 'label (non-text item looking like text)';
-202: ItemStil:= 'numbered sequence';
-203: ItemStil:= 'footnote';
-204: ItemStil:= 'endnote';
-205: ItemStil:= 'reference to the parent footnote or endnote';
else ItemStil:= intToStr(rveTable.Cells[r,c].GetRVData.GetItemStyle(0));
end;
end else begin
//*)
case memo.GetItemStyle(memo.CurItemNo) of
0: ItemStil:= 'normal text';
1: ItemStil:= 'Heading 1';
2: ItemStil:= 'Heading 2';
3: ItemStil:= 'Keywords';
4: ItemStil:= 'Hypertext 1';
5: ItemStil:= 'Hypertext 2';
6: ItemStil:= '6';
10: ItemStil:= 'normal';
11: ItemStil:= 'hochgestellt';
12: ItemStil:= '12';
13: ItemStil:= 'tiefgestellt';
-1: ItemStil:= 'break (horizontal line)';
-3: ItemStil:= 'picture';
-4: ItemStil:= 'hotspot (picture from ImageList - hyperlink)';
-5: ItemStil:= 'inserted Delphi control';
-6: ItemStil:= 'bullet (picture from ImageList)';
-10: ItemStil:= 'hot picture (picture - hyperlink)';
-11: ItemStil:= 'list marker (bullet or numbering of paragraphs)';
-12: ItemStil:= 'tabulator';
-60: ItemStil:= 'table';
-200: ItemStil:= 'label (non-text item looking like text)';
-202: ItemStil:= 'numbered sequence';
-203: ItemStil:= 'footnote';
-204: ItemStil:= 'endnote';
-205: ItemStil:= 'reference to the parent footnote or endnote';
else ItemStil:= intToStr(memo.GetItemStyle(memo.CurItemNo));
end;
end;
//---- GetItemPara --------------------------------------------------------
//(* muss dieses Splittung in Tabelle + Nicht-Tabelle sein ?
if memo.GetItemStyle(memo.CurItemNo)= -60 then begin //Tabelle
if memo.GetCurrentItemEx(TRVTableItemInfo, rve, TCustomRVItemInfo(rveTable)) then rveTable.GetEditedCell(r,c);
case rveTable.Cells[r,c].GetRVData.GetItemPara(0) of
0: ParaStil:= 'normal text';
else ParaStil:= intToStr(rveTable.Cells[r,c].GetRVData.GetItemPara(0));
end;
end else begin //<> Tabelle
//*)
case memo.GetItemPara(memo.CurItemNo) of
0: ParaStil:= 'Normaler Text';
else ParaStil:= intToStr(memo.GetItemPara(memo.CurItemNo));
end;
end;
//-------------- Hier sollen fehlende Informationen rein --------------------
//-----------------------------------------------------------------------------
//Auswertung
ShowMessage('Schriftart: '+fi.fontname+#10+
'Schriftgrad: '+intToStr(fi.size)+#10+
'Schriftschnitt: '+schrSchnitt+#10+
'Schriftfarbe: '+schrFarbe+#10+
'Hintergrundfarbe: '+hgFarbe+#10+
'ItemStyle: '+ItemStil+#10+
'ParaStyle: '+paraStil+#10#10);
end;
I want to get all infos at the position of caret (which is in a memo or in a “memo-table”).
This was created under Vista, Delphi 7.1 and TDBRichViewEdit v13.9
Who can complete or finish or correct the following code ?
procedure TForm1.sbTesten1Click(Sender: TObject);
var fi: TFontInfo;
schrSchnitt,schrFarbe, hgFarbe, itemStil, paraStil: string;
r,c: integer;
begin
IgnoreChanges := True; // ???
fi := rvs.TextStyles[Memo.CurTextStyleNo];
IgnoreChanges := False; // ???
if fsBold in fi.Style then schrSchnitt:= 'fett, ';
if fsItalic in fi.Style then schrSchnitt:= schrSchnitt+'kursiv, ';
if fsUnderline in fi.Style then schrSchnitt:= schrSchnitt+'unterstrichen, ';
if fsStrikeOut in fi.Style then schrSchnitt:= schrSchnitt+'durchgestrichen';
if fi.Style= [] then schrSchnitt:= 'normal';
schrSchnitt:=str_DelE(schrSchnitt, #32); //löscht am Stringende: #32
schrSchnitt:=str_DelE(schrSchnitt, ','); //löscht am Stringende: ','
case fi.color of
0: schrFarbe:= 'schwarz';
255: schrFarbe:= 'rot';
16711680: schrFarbe:= 'blau';
536870911: schrFarbe:= 'weiß';
3252790: schrFarbe:= 'grün';
65280: schrFarbe:= 'hellgrün';
16711935: schrFarbe:= 'fuchsia';
65535: schrFarbe:= 'gelb';
13146423: schrFarbe:= 'türkis';
else schrFarbe:= intToStr(fi.color);
end;
case fi.backcolor of
0: hgFarbe:= 'schwarz';
255: hgFarbe:= 'rot';
16711680: hgFarbe:= 'blau';
536870911: hgFarbe:= 'weiß';
3252790: hgFarbe:= 'grün';
65280: hgFarbe:= 'hellgrün';
16711935: hgFarbe:= 'fuchsia';
65535: hgFarbe:= 'gelb';
13146423: hgFarbe:= 'türkis';
else hgFarbe:= intToStr(fi.backcolor);
end;
//---- GetItemStyle --------------------------------------------------------
//(* //muss dieses Splittung in Tabelle + Nicht-Tabelle sein ?
if memo.GetItemStyle(memo.CurItemNo)= -60 then begin
if memo.GetCurrentItemEx(TRVTableItemInfo, rve, TCustomRVItemInfo(rveTable)) then rveTable.GetEditedCell(r,c);
case rveTable.Cells[r,c].GetRVData.GetItemStyle(0) of
0: ItemStil:= 'normal text';
1: ItemStil:= 'Heading 1';
2: ItemStil:= 'Heading 2';
3: ItemStil:= 'Keywords';
4: ItemStil:= 'Hypertext 1';
5: ItemStil:= 'Hypertext 2';
6: ItemStil:= '6';
10: ItemStil:= 'normal';
11: ItemStil:= 'hochgestellt';
12: ItemStil:= '12';
13: ItemStil:= 'tiefgestellt';
-1: ItemStil:= 'break (horizontal line)';
-3: ItemStil:= 'picture';
-4: ItemStil:= 'hotspot (picture from ImageList - hyperlink)';
-5: ItemStil:= 'inserted Delphi control';
-6: ItemStil:= 'bullet (picture from ImageList)';
-10: ItemStil:= 'hot picture (picture - hyperlink)';
-11: ItemStil:= 'list marker (bullet or numbering of paragraphs)';
-12: ItemStil:= 'tabulator';
-60: ItemStil:= 'table';
-200: ItemStil:= 'label (non-text item looking like text)';
-202: ItemStil:= 'numbered sequence';
-203: ItemStil:= 'footnote';
-204: ItemStil:= 'endnote';
-205: ItemStil:= 'reference to the parent footnote or endnote';
else ItemStil:= intToStr(rveTable.Cells[r,c].GetRVData.GetItemStyle(0));
end;
end else begin
//*)
case memo.GetItemStyle(memo.CurItemNo) of
0: ItemStil:= 'normal text';
1: ItemStil:= 'Heading 1';
2: ItemStil:= 'Heading 2';
3: ItemStil:= 'Keywords';
4: ItemStil:= 'Hypertext 1';
5: ItemStil:= 'Hypertext 2';
6: ItemStil:= '6';
10: ItemStil:= 'normal';
11: ItemStil:= 'hochgestellt';
12: ItemStil:= '12';
13: ItemStil:= 'tiefgestellt';
-1: ItemStil:= 'break (horizontal line)';
-3: ItemStil:= 'picture';
-4: ItemStil:= 'hotspot (picture from ImageList - hyperlink)';
-5: ItemStil:= 'inserted Delphi control';
-6: ItemStil:= 'bullet (picture from ImageList)';
-10: ItemStil:= 'hot picture (picture - hyperlink)';
-11: ItemStil:= 'list marker (bullet or numbering of paragraphs)';
-12: ItemStil:= 'tabulator';
-60: ItemStil:= 'table';
-200: ItemStil:= 'label (non-text item looking like text)';
-202: ItemStil:= 'numbered sequence';
-203: ItemStil:= 'footnote';
-204: ItemStil:= 'endnote';
-205: ItemStil:= 'reference to the parent footnote or endnote';
else ItemStil:= intToStr(memo.GetItemStyle(memo.CurItemNo));
end;
end;
//---- GetItemPara --------------------------------------------------------
//(* muss dieses Splittung in Tabelle + Nicht-Tabelle sein ?
if memo.GetItemStyle(memo.CurItemNo)= -60 then begin //Tabelle
if memo.GetCurrentItemEx(TRVTableItemInfo, rve, TCustomRVItemInfo(rveTable)) then rveTable.GetEditedCell(r,c);
case rveTable.Cells[r,c].GetRVData.GetItemPara(0) of
0: ParaStil:= 'normal text';
else ParaStil:= intToStr(rveTable.Cells[r,c].GetRVData.GetItemPara(0));
end;
end else begin //<> Tabelle
//*)
case memo.GetItemPara(memo.CurItemNo) of
0: ParaStil:= 'Normaler Text';
else ParaStil:= intToStr(memo.GetItemPara(memo.CurItemNo));
end;
end;
//-------------- Hier sollen fehlende Informationen rein --------------------
//-----------------------------------------------------------------------------
//Auswertung
ShowMessage('Schriftart: '+fi.fontname+#10+
'Schriftgrad: '+intToStr(fi.size)+#10+
'Schriftschnitt: '+schrSchnitt+#10+
'Schriftfarbe: '+schrFarbe+#10+
'Hintergrundfarbe: '+hgFarbe+#10+
'ItemStyle: '+ItemStil+#10+
'ParaStyle: '+paraStil+#10#10);
end;