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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.006 c
15-1230157223
istok2
2008-12-25 01:20
2009.02.22
Прикладная учетная система...


15-1230372262
инструкция
2008-12-27 13:04
2009.02.22
при перезаагрузке/выключении вылазит ошибка:


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


2-1231743195
b@v
2009-01-12 09:53
2009.02.22
ComboBox


9-1177433968
@!!ex
2007-04-24 20:59
2009.02.22
ПРоблемы Z буффера.





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