Comments

: I want to make a character map program using delphi 6 or 7, but I can't find the component display the letter especially the unicode letter from a installed system font like Arial or Webdings: That's quite easy to do. For this you need a form with a button, a stringgrid and a label. The code below will fill the stringgrid with the characters #0 to #CellCount. So a 16 by 16 grid shows all first 256 characters. With the OnSelectCell() event you can get the character code into the label as shown below.[code]procedure TForm1.Button1Click(Sender: TObject);var i: integer;begin with StringGrid1 do for i := 0 to RowCount*ColCount-1 do // loop through maximum number of cells Cells[i mod ColCount, i div ColCount] := WideChar(i); // Get the character based on its indexend;

: : I want to make a character map program using delphi 6 or 7, but I can't find the component display the letter especially the unicode letter from a installed system font like Arial or Webdings: : : That's quite easy to do. For this you need a form with a button, a stringgrid and a label. The code below will fill the stringgrid with the characters #0 to #CellCount. So a 16 by 16 grid shows all first 256 characters. With the OnSelectCell() event you can get the character code into the label as shown below.: [code]: procedure TForm1.Button1Click(Sender: TObject);: var: i: integer;: begin: with StringGrid1 do: for i := 0 to RowCount*ColCount-1 do // loop through maximum number of cells: Cells[i mod ColCount, i div ColCount] := WideChar(i); : // Get the character based on its index: end;: : procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,: ARow: Integer; var CanSelect: Boolean);: begin: Label1.Caption := IntToStr(ARow*StringGrid1.ColCount+ACol);: end;: [/code]: Well, the code is good, but how I know the number of character a font can take, cause there are font that can have more than 5000 character since unicode character take 32 bit(65525).

: : : I want to make a character map program using delphi 6 or 7, but I can't find the component display the letter especially the unicode letter from a installed system font like Arial or Webdings: : : : : That's quite easy to do. For this you need a form with a button, a stringgrid and a label. The code below will fill the stringgrid with the characters #0 to #CellCount. So a 16 by 16 grid shows all first 256 characters. With the OnSelectCell() event you can get the character code into the label as shown below.: : [code]: : procedure TForm1.Button1Click(Sender: TObject);: : var: : i: integer;: : begin: : with StringGrid1 do: : for i := 0 to RowCount*ColCount-1 do // loop through maximum number of cells: : Cells[i mod ColCount, i div ColCount] := WideChar(i); : : // Get the character based on its index: : end;: : : : procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,: : ARow: Integer; var CanSelect: Boolean);: : begin: : Label1.Caption := IntToStr(ARow*StringGrid1.ColCount+ACol);: : end;: : [/code]: : : Well, the code is good, but how I know the number of character a font can take, cause there are font that can have more than 5000 character since unicode character take 32 bit(65525).: I couldn't find any function or property which returns the number of characters in a font. I suggest that you let the user decide how many characters are shown.

I want to use that code of your with a T(JV)RichEdit,where under the T(JV)RichEdit the stringgrid withthe UTF-8 / UNICODE-Chars appear. By setting the TFontCharset, I can fillup the StringGrrid withArabic, Hebrew, Russian, Turkish and Western...

The Russian omage eg has the ASCII-Code 916

But filling up the StringGrid with Russian chars(Unicode Arial), omega has the value 191.

How can I caculate between 916 of the UNICODE-codeand the 191-ASCII-Code inside the Stringgrid(to and through:-- the user selects Omage inside the T(JV)RichEdit and anside the StringGrid, the Char Omage will be highlighted-- The user clicks inside of the Stringgrid (with Charset Russian) on Omega and inside the RichEdit (and eg also inside the UNICODE-conntrol TNTEdit), Omage wil be set.

How can I achieve this (maybe with a formula, but calculationsby dividing by 256 won't work).