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

Вниз

Текст в несколько строк в mdvXLGrid - КАК?   Найти похожие ветки 

 
<Falcon>   (2003-09-17 12:06) [0]

Посоветуйте, как лучше сделать текст в ячейке сетки mdvXLGrid в несколько строк?
пробовал:

mdvXLGrid.Cels[i,j].Text:="1-st string"+#13#10+"2-nd string";

 -  не работает выдает в одну строку с мусором вместо завершения строки и Enter.

Или только через Canvas делать? Не хотелось бы...


 
savva ©   (2003-09-17 14:55) [1]

я подправлял модуль под свои нужды - убирал DT_SINGLELINE из строки
       DrawText(ACanvas.Handle, PChar(ATitle.Items[i]), -1, ARect, DT_SINGLELINE or DT_CENTER or DT_VCENTER);


 
mdw ©   (2003-09-17 15:31) [2]

Или написать эту строчку в в событии OnDrawCell
procedure TMainForm.XLGridDrawCell(Sender: PControl; ACol, ARow: Integer;
 ACell: PmdvXLCell; ACanvas: PCanvas; ARect: TRect; ASelected,
 AFocused: Boolean; var Access: Boolean);
begin
   Access:= True;
   ACanvas.RequiredState( HandleValid or FontValid or BrushValid or ChangingCanvas );
   DrawText(ACanvas.Handle, PChar(ATitle.Items[i]), -1, ARect, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
end;


 
mdw ©   (2003-09-17 15:34) [3]

Вернее вот такую строку:
DrawText(ACanvas.Handle, PChar(ACell.Text), -1, ARect, DT_WORDBREAK);


 
<Falcon>   (2003-09-17 15:46) [4]

Во... а то я предыдущий ответ чиатю и уже переспросить хотел при чем тут ATitle.Items[i]. :) Я понял, спасибо!


 
<Falcon>   (2003-09-17 17:13) [5]

Работает, только линии сетки затирает...


 
mdw ©   (2003-09-17 20:07) [6]

>Работает, только линии сетки затирает...
Не затирает, а не рисует. Вся отрисовка ячейки ложится на пользователя... Может свойство - признак как выводить, в одну или несколько строк добавить?


 
<Falcon>   (2003-09-18 09:54) [7]

Да. Все правильно. Это я уже поправил. Я тут уже с другой проблемой столкнулся:
При выводе в несколько строк и горизонтальном расположении текста
все нормально - что хотел то и получил, а вот при вертикальном - по строкам то текст бьется, но выводится невесть куда, только части видны. Или вообще одну строку на другую лепит.Вот код, может кто-нибудь подскажет где ошибка?

procedure TForm1.Button1Click(Sender: PObj);
begin
Grid.Cells[1,1].Font.FontName:="Arial";
Grid.Cells[1,1].Font.FontOrientation:=900;
Grid.Cells[1,1].Font.Color:=clWindowText;
Grid.Cells[1,1].Font.FontStyle:= [fsBold,fsItalic,fsUnderline];
Grid.Cells[1,1].Font.FontCharSet:=RUSSIAN_CharSet;
Grid.AlignmentVert:= avBottom;
Grid.AlignmentHor:=ahCenter;
Grid.Cells[1,1].Text:="Первая строка, вторая строка";
Grid.Cells[1,2].Text:="Test!";
end;

procedure TForm1.GridDrawCell(Sender: PControl; ACol, ARow: Integer;
 ACell: PmdvXLCell; ACanvas: PCanvas; ARect: TRect; ASelected,
 AFocused: Boolean; var Access: Boolean);
begin
Access:= ACell=Grid.Cells[1,1];
ACanvas.Rectangle(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom);
ACanvas.Font.Assign(ACell.Font);
ACanvas.RequiredState( HandleValid or FontValid or BrushValid or ChangingCanvas );
DrawText(ACanvas.Handle, PChar(ACell.Text), -1, ARect, DT_WORDBREAK or DT_CENTER or DT_BOTTOM );
end;

procedure TForm1.KOLForm1FormCreate(Sender: PObj);
begin
GlobalGraphics_UseFontOrient:=True;
end;

end.


 
mdw ©   (2003-09-18 14:58) [8]

Я поигрался с вертикальным выводом.
Получается вот так:
R:= MakeRect(ARect.Left, ARect.Bottom, ARect.Right, ARect.Top);
DrawText(ACanvas.Handle, PChar(ACell.Text), -1, R, DT_WORDBREAK or DT_RIGHT );

НО!!! Позиционируется техт правильно. А вот расчет переносов идет не по значению (ARect.Bottom - ARect.Top), а по (ARect.Right - ARect.Left). Я так думаю, что это все таки ошибка в DrawText.

Так что, наверное, придется или вручную расчитывать переносы и выводить построчно TextOut"ом или выводить техт горизонтально на Bitmap, поворачивать его и выводить в ячейке.



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

Форум: "KOL";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
7-1077527680
Falendysh
2004-02-23 12:14
2004.04.25
RegisterComponents


3-1080632730
miwa
2004-03-30 11:45
2004.04.25
С Refresh-ем не умею работать.


1-1081405239
prorok2
2004-04-08 10:20
2004.04.25
Изменение картинки при нахождении над ним курсора мыши


1-1081362443
jiuraf
2004-04-07 22:27
2004.04.25
Проблема с RichEdit


1-1081433311
mbgmz
2004-04-08 18:08
2004.04.25
проблема с компонентами





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский