Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];

Вниз

Вывод в стандарте Юникод   Найти похожие ветки 

 
MAxiMum   (2002-05-29 17:54) [0]

Я пишу программу,которая должна вставлять символы из многих языков (не программирования, конечно ). Я думаю, для этих целей надо использовать Юникод. Но, на сколько мне известно, компоненты не потдерживают такой кодировки.Как быть?


 
KilkennyCat   (2002-05-29 18:47) [1]

А я просто разрешаю пользователям выбирать шрифт.


 
MAxiMum   (2002-05-29 19:21) [2]

А под Win9x?


 
KilkennyCat   (2002-05-29 19:52) [3]

А я именно под Win9x работаю


 
MAxiMum   (2002-05-31 15:21) [4]

Иными словами, как сделать таблицу символов с поддержкой Юникода?


 
MAxiMum   (2002-05-31 15:33) [5]

Мне надо запихнуть в TDrawGrid, но каким образом я не знаю. Если использовать Canvas.TextOut и, как следствие, Chr, то вступает ограничение на тип Byte, на который она и рассчитана.
А нужно ведь Cardinal, да?


 
Внук   (2002-05-31 17:57) [6]

Криво, но тороплюсь, рабочий день уже закончился :)

procedure TForm1.Button1Click(Sender: TObject);
var dc:HDC;
s:WideChar;
i:integer;
begin
dc:=GetDC(Handle);
for i:=2000 to 2050 do
begin
s:=WideChar(i);
TextOutW(dc,10+(i-2000)*20,10,@s,1);
Application.ProcessMessages;
sleep(500);
end;
ReleaseDC(Handle,dc);
end;


 
MAxiMum   (2002-05-31 18:15) [7]

Понимаю, торопился, но не работает как надо.


 
MAxiMum   (2002-06-03 11:08) [8]

Что никто не сможет ответить!???


 
McSimm   (2002-06-03 12:20) [9]

Проверь Handle окна, для которого будет вызываться TextOutW функцией IsWindowUnicode.
Выбери шрифт, содержащий символы Unicode - посмотри утилитой Character Map.

Шрифты обычно содержат далеко не все символы.

У меня все получилось


 
Игорь Шевченко   (2002-06-03 12:29) [10]

Вот маленький пример:

unit UnicodeControl;

interface
uses
Graphics, Windows, Messages, Classes, Controls;

type
TUnicodeControl = class(TCustomControl)
private
procedure CMFontChanged (var Message : TMessage); message CM_FONTCHANGED;
protected
procedure Paint; override;
public
constructor Create (AOwner : TComponent); override;
property Color;
property Font;
end;

implementation
uses
SysUtils, Dialogs;

{ TUnicodeControl }


procedure TUnicodeControl.CMFontChanged(var Message: TMessage);
begin
inherited;
if Canvas <> nil then
Canvas.Font := Font;
end;

constructor TUnicodeControl.Create(AOwner: TComponent);
begin
inherited;
Font.Name := "Tahoma";
Font.CharSet := GREEK_CHARSET;
ParentFont := false;
end;

procedure TUnicodeControl.Paint;
var
Rect : TRect;
AText : array [0..255] of WideChar;
begin
inherited;
Rect := ClientRect;
OffsetRect(Rect, 2, 0);
FillChar(AText, Sizeof(AText), 0);
AText[0] := WideChar($03A0);
AText[1] := WideChar($03A1);
AText[2] := WideChar($0399);
AText[3] := WideChar($0392);
AText[4] := WideChar($0395);
AText[5] := WideChar($03A4);
AText[6] := WideChar($03A9);
DrawTextW(Canvas.Handle, AText, -1, Rect, DT_SINGLELINE);
end;

И в главной форме:

procedure TForm1.FormCreate(Sender: TObject);
begin
FUnicodeControl := TUnicodeControl.Create(Self);
with FUnicodeControl do begin
Parent := Self;
Color := clWhite;
SetBounds(10, 10, 100, 20);
end;
end;



 
MAxiMum   (2002-06-03 16:57) [11]

Спасибо всем. Разобрался я с этим.
Теперь у меня другой вопрос. Как к стандартные объекты редактирования (например, TEdit, TMemo, TRichEdit и т.д.) мне можно поместить символ в кодировке Unicode. Не найду никак ответа.


 
Игорь Шевченко   (2002-06-03 17:07) [12]

Обрабатывать их WM_PAINT, заняться сабклассингом (может быть...)


 
MAxiMum   (2002-06-03 17:15) [13]

Если можно пример. А без "сабклассинга" (т.е. написания нового компонента, да?) обойтись нельзя?


 
Игорь Шевченко   (2002-06-03 17:25) [14]

Сабклассинг - это не написание нового компонента. Это подмена оконной процедуры окна.
SetWindowLong(hWnd, GWL_WNDPROC, Integer(MyNewEditWndProc));

А пример предлагаю сделать самостоятельно :-)


 
MAxiMum   (2002-06-03 18:11) [15]

Еще умельцы есть? Подскажите, плз.


 
MAxiMum   (2002-06-04 14:26) [16]

Говорят для этого надо переписать всю библиотеку VCL. По-другому, никак. А может, как-нибудь, можно попробовать переписать только, например, TMemo. А?


 
Игорь Шевченко   (2002-06-04 14:35) [17]

MAxiMum © (04.06.02 14:26)

Я же надавал кучу ссылок - неужели там ничего нет ?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
3-54997
PSZ
2002-05-22 17:20
2002.06.17
Проверка на null в таблице.


4-55372
Saint_Byte
2002-04-16 15:33
2002.06.17
Файловые события


1-55067
vlv
2002-06-05 18:12
2002.06.17
Com - объекты


1-55124
PTE
2002-06-06 12:53
2002.06.17
при запуске меняется код программы


1-55215
Бадян
2002-06-05 11:47
2002.06.17
EIntOverflow :???:





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский