Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.22;
Скачать: CL | DM;

Вниз

Работа с Мемо компонентами   Найти похожие ветки 

 
r900000   (2009-01-13 08:29) [0]

Доброе утро.
У меня возник такой вопрос. Можно ли при использовании Мемо компонентов в виде строки сделать так, чтобы грубо говоря стобцы в этих компонентах располагались начиная одинаково с одной позиции?
Например
Мемо1:
1        rty      u    qwertyi
Memo2:  
20      a        dfg  e
Такая вещь не помогает:
while not ((strtoint(sleftpr)<=form1.Canvas.TextWidth(s1)+ strtoint(sleft1))) do
s1:=s1+" ";


 
Сергей М. ©   (2009-01-13 09:08) [1]

Можно, если в св-ве Font указать моноширный фонт.


 
r900000   (2009-01-13 09:31) [2]

Можно, если в св-ве Font указать моноширный фонт.
А какой это шрифт? как его название?


 
Сергей М. ©   (2009-01-13 09:38) [3]


> какой это шрифт?


Например, Fixedsys


 
r900000   (2009-01-13 09:44) [4]

А ещё можно какой-нибудь, а то этот жирноват будет?


 
Сергей М. ©   (2009-01-13 09:49) [5]


> ещё можно какой-нибудь


Можно. Ищи сам среди имеющихся у тебя.


 
MBo ©   (2009-01-13 09:57) [6]

courier new


 
{RASkov} ©   (2009-01-13 11:43) [7]

Да, и вместо этого:

> while not ((strtoint(sleftpr)<=form1.Canvas.TextWidth(s1)
> + strtoint(sleft1))) do
> s1:=s1+" ";

лучше использовать Format для моноширных шрифтов.....


 
r900000   (2009-01-13 11:53) [8]

Да сейчас он вроде в строках с одной позиции выводит и вроде вот это условие выполняется:
while not ((strtoint(sleftpr)<=form1.Canvas.TextWidth(s1)+ strtoint(sleft1))) do
s1:=s1+" ";
но у меня еще вертикальные линии рисуются между столбцами
и там почему-то sleftpr отличается от начала значения столбца, в чем может быть ошибка?

Строка 1
73-73
123-129
723-724
843-843
963-969
1083-1088
1203-1207
1323-1326
1443-1445
1563-1564
1683-1683
1803-1809
1923-1928
2043-2047
2163-2166
2283-2285
2403-2404
2523-2523
2643-2649
2763-2768
2883-2887
3003-3006
3123-3125
3243-3244
3363-3363
3483-3489
3603-3608
3723-3727
3843-3846
3963-3965
Строка 2
73-73
123-129
723-724
843-843
963-969
1083-1088
1203-1207
1323-1326
1443-1445
1563-1564
1683-1683
1803-1809
1923-1928
2043-2047
2163-2166
2283-2285
2403-2404
2523-2523
2643-2649
2763-2768
2883-2887
3003-3006
3123-3125
3243-3244
3363-3363
3483-3489
3603-3608
3723-3727
3843-3846
3963-3965


 
Сергей М. ©   (2009-01-13 11:57) [9]


> while not ((strtoint(sleftpr)<=form1.Canvas.TextWidth(s1)+
> strtoint(sleft1))) do
> s1:=s1+" ";


Что это вообще за беда ?
Причем здесь канва формы, если текст выводится на канву мемо ?


 
{RASkov} ©   (2009-01-13 12:00) [10]

> но у меня еще вертикальные линии рисуются между столбцами

В Мемо.... А гридах мы эти самые линии убираем :)
Зачем такие извраты?)


 
{RASkov} ©   (2009-01-13 12:01) [11]

Если на то пошло, то лучше ТПаинтБокс в таком плане использовать....


 
r900000   (2009-01-13 12:02) [12]

А у мемо Canvas разве есть и потом для формы я ставлю размер и шрифт моноширный.


 
r900000   (2009-01-13 12:05) [13]

А как Format  здесь использовать
Да нет я вообще динамически создаю элементы в fastreporte, а так по отдельным элементам выходит долго, пробую создать построчно.


 
{RASkov} ©   (2009-01-13 12:06) [14]

> [12] r900000   (13.01.09 12:02)
> А у мемо Canvas разве ест

А гдеж рисуешь верт полосы?)


 
clickmaker ©   (2009-01-13 12:09) [15]

> А гдеж рисуешь верт полосы?)

наверно, это столбики | :)


 
r900000   (2009-01-13 12:10) [16]

Да все в fastreporte рисуется динамически.


 
{RASkov} ©   (2009-01-13 12:12) [17]

Как-то так:
Memo.Lines.Add(Format("%-5s | %-5s | %5s", [s1, s2, s3]));
Format() + F1


 
Сергей М. ©   (2009-01-13 12:13) [18]


> как Format  здесь использовать


Так же как и там.
Ты справку к Format() проштудировал ?


 
r900000   (2009-01-13 12:58) [19]

С форматом вроде понятно.
Но у меня другое непонятно
Линии вертикальные столбцов у меня в fastreporte формируются так
linepost := TFRXLineView.Create(DataBandpror);
 linepost.CreateUniqueName;
 linepost.Left:=ileft;
 linepost.Top:=itop;
 linepost.Height:=abs(maxpoprav)+strtoint(elemrowsetheigth);  
по координатам соответсвенным, эти линии вроде правильно рисуются соединяются где нужно
далее когда я ставлю шрифт не моноширный вот это
while not ((strtoint(sleftpr)<=form1.Canvas.TextWidth(s1)+ strtoint(sleft1))) do
s1:=s1+" ";
дает начало столбца данных после  sleftpr(что правильно), но столбцы в строках  будут начинаться с разных позиций(что неправильно)
если ставлю  шрифт моноширный, начало столбца данных может в некоторых  столбцах быть до sleftpr(что неправильно), а столбцы в строках  будут начинаться с одинаковых позиций(что правильно)
Так вот непонятно почему это происходит и как это исправить?


 
Сергей М. ©   (2009-01-13 16:34) [20]

Ты вот скажи, зачем тебе нужно изображать в FR-отчете таблицу именно таким извращенным способом ?


 
r900000   (2009-01-14 06:28) [21]

Вообще нужно строить динамически любой отчет по разным xml. Я это и пытаюсь делать.


 
Сергей М. ©   (2009-01-14 09:07) [22]

Нет а зачем этот отчет рисовать в одном-единственном Мемо ?
Что мешает динамически создать/настроить столько мемо , сколько полей будет в отчете ?


 
r900000   (2009-01-14 11:50) [23]

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


 
r900000   (2009-01-14 11:53) [24]

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


 
Сергей М. ©   (2009-01-14 12:03) [25]


> r900000


Ты бы хоть почитал док-цию к FR да бы посмотрел демо-проекты, перед тем как лепить невесть что ..

За каким лешим, спрашивается,  в табличном FR-отчете потребовалось создавать столько мемо ?
Достаточно по одному мемо на каждое поле НД.


 
r900000   (2009-01-14 12:10) [26]

Ну наверно так и буду делать.
А вот while not ((strtoint(sleftpr)<=form1.Canvas.TextWidth(s1)+ strtoint(sleft1))) do
s1:=s1+" ";
для моноширных шрифтов не работает мне кажется потому что form1.Canvas.TextWidth(s1) отличается от Canvas fastreport.
А как Canvas fastreport обращаться непонятно я так и не нашел?


 
Сергей М. ©   (2009-01-14 12:21) [27]

Вот же дался тебе этот Canvas !
Зачем он тебе ?
Зачем вся эта катавасия с циклом ?


 
r900000   (2009-01-14 12:50) [28]

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


 
Сергей М. ©   (2009-01-14 12:56) [29]


> чтобы где идет вертикальная линия


Что ты сказку про белого бычка затянул со своей "линией" ?

Ты же [25] прочитал ?
В [26] ты согласился с [25] ?


 
r900000   (2009-01-14 13:07) [30]

Ну так хотелось бы и этот вариант порочный :) отработать


 
Сергей М. ©   (2009-01-14 13:09) [31]

А в чем прелесть удалять гланды ректально ? Не понимаю ..


 
{RASkov} ©   (2009-01-14 13:11) [32]

> [30] r900000   (14.01.09 13:07)

Раз решил использовать канву, то бери канву того контрола, с которым работаешь, а не "соседнего"....
например GetDC или TControlCanvas есно + F1


 
r900000   (2009-01-14 13:36) [33]

Так я и пытаюсь сейчас  не могу найти как это сделать для
fastreport, ну или на худой конец для обычного memo как это  form1.Canvas.TextWidth(s1) сделать, может в fastreport также?


 
Сергей М. ©   (2009-01-14 13:48) [34]


> r900000   (14.01.09 13:36) [33]


Нет ну ты точно блаженный)
Для вставки символа-разделителя в определенную позицию строки не нужна никакая канва вообще.


 
r900000   (2009-01-14 14:00) [35]

Да я ж говорю я не символы разделители вставляю для разделения на столбцы строку я вообще разделительные вертикальные линии формирую по другому вот
как я уже писал
linepost := TFRXLineView.Create(DataBandpror);
linepost.CreateUniqueName;
linepost.Left:=ileft;
linepost.Top:=itop;
linepost.Height:=abs(maxpoprav)+strtoint(elemrowsetheigth);


 
Сергей М. ©   (2009-01-14 14:09) [36]


> я вообще разделительные вертикальные линии формирую по другому


Ну что тебе сказать ? Затею дурней этой придумать сложно)



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

Текущий архив: 2009.02.22;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.014 c
2-1231117634
VolMyr
2009-01-05 04:07
2009.02.22
Главная форма


9-1177264606
ElectriC
2007-04-22 21:56
2009.02.22
Класс тени в DirectX


2-1231593826
S.S.T.
2009-01-10 16:23
2009.02.22
посчитать количество слов в строке


15-1230284499
pasha_golub
2008-12-26 12:41
2009.02.22
Сколько весит экзешник пустого проекта в Д2009?


15-1230091521
TUser
2008-12-24 07:05
2009.02.22
Выворачиваем сферу наизнанку