|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
string too long at line
Добрый день.
У меня проблема следующего характера. Мне нужно вывести в TLabel большое количество текста. Если я присваиваю текст непосредственно к label по принцепу label1.caption:= 'много-много текста'; выдается ошибка о том что текста очень много, программа все равно компилируется но текст не выводится в Tlabel я решил запихнуть текст в стринг, а потом присвоить стринг TLabel. Но происходит та же ситуация, когда я присваиваю много текста, только теперь ругается не на tlabel а на стринг. если разбивать текст по принципу str:='255 символов' + '255 символов'; все работает и текст выводится в tlabel. использую ansistring, widestring - эффект тот же. текст, который я вставляю - русский. Пробовал в utf-8, ansi... не помогает. помогите плз, текста слишком много чтобы по 255 символов разбивать((( Последний раз редактировалось kirkul, 04.10.2010 в 11:46. |
#2
|
||||
|
||||
взасунуть этот текст в файл/ресурс)
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Спасибо... но может всетаки есть какое-то решение непосредственно в коде страницы?)
|
#4
|
|||
|
|||
Предлагаю отказаться от использования TLabel, а использовать TMemo, или TRichEdit, настроив их на прозрачность.
|
#5
|
||||
|
||||
Долго думал, выкладывать или нет. Ну да пожалуй, чего жадничать
В пакете 2 компонента: TspText и TspCheck. Первый представляет из себя аналог TLabel. Свойста: -Alignment - Выравнивание (по центру, по левому краю, по правому краю, по ширине!!!) -AutoHeight - Автоматический расчет и утановка ширины компонента взависимости от заданного текста -Paragraph - отступ в пикселях от левого края с начала каждого абзаца -Text [TStringList] - собственно отображаемый текст -Transparent - думаю, в коментариях не нуждается События не делал. Не было необходимости. Второй компонент - чтото среднее между TRadioButton+TCheckBox+TspText: Свойства: -Те же что и в spText -AsRadio - определяет поведение компонента (true - как RadioButton (на родительском окне может быть выбран только один), false - как CheckBox) -Checked - определяет установлен ли флажок выбора -CheckSize - размер флажка в пикселях Событий тоже не имеет. Вобщем, косяки там конечно имеются, но на D6 и D7 (тестировалось только на них) нареканий с моей стороны не было. Пользуйтесь наздоровье! Последний раз редактировалось dr. F.I.N., 12.01.2012 в 17:09. |
#6
|
||||
|
||||
Есть пару способов, но не много, или использовать много строчные компоненты (типа мемо, рич едит), как писали выше, или записать в ресурс, или сделать себе пограмму-помощник, в которую будут вводить текст (в мемо), а она будет разбивать этот текст по принципу после 255 элемента вставлять ' + '. Тобишь программа будет сама разбивать строки по 255 символов, а потом просто в label 'e поставишь word wrap и все будет супер.
Примерно твой помощник должен иметь такой код: Код:
бла бла бла Button1Click(...) var i: Integer; s: string // твоя строка (большая) rez: String; // результат begin rez := ''; s:=memo1.text; whilt length(s)>0 do begin while i <> 255 do begin inc(i); rez := rez + s[i] + '''+ '''; delete(s, i, i-255); end; i:=0; end; // стразу отмчаю что писал не в делфи, не тестил + тут очень много ошибок (типо "i-255" в первом случае будет ошибка, т.к. s[-255] быть не может, это просто пример, поэкспериментируй... Ну или используй компоненты, которые предложили выше... Помогаю за Спасибо Последний раз редактировалось v1s2222, 04.10.2010 в 16:26. |
#7
|
||||
|
||||
Цитата:
Код:
procedure TForm1.FormCreate(Sender: TObject); begin Label1.Caption:=Memo1.Text; end; Пишу программы за еду. __________________ |