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

Вниз

Ну Очень простой вопрос !!! (кол-во строк в лейбле )   Найти похожие ветки 

 
Ler   (2003-05-12 16:34) [0]

Мастера, Помогите!!!

На форме есть компонент Label1 и кнопка:

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.AutoSize:=false;
Label1.Width :=40;
Label1.Height :=100;
Label1.Caption :="Хочу знать количество строк!!!";
Label1.WordWrap:=true;
end;

Как получить это самое кол-во строк в лейбле после Label1.WordWrap:=true;?


 
Ler   (2003-05-12 16:56) [1]

АУ !!!


 
kull   (2003-05-12 17:04) [2]

А если взять ClientHeight и высоту фонта и поделить?
А можно еще через функцию DrawText (Win API) ...


 
Ler   (2003-05-12 17:05) [3]

АУ !!!
АУ !!!
АУ !!!




 
deedlit   (2003-05-12 17:09) [4]

Хм... а как ты их туда заносишь, если не секрет? ;)

Если так: Label1.Caption:="Borland"+chr(10)+chr(13)+"Delphi", где chr(10)+chr(13) - символ перевода каретки, то проблему можно решить банальным циклом. Нечто вроде While pos(chr(13), Label1.Caption)<>0 do Inc(Counter, 1), где Counter - счетчик числа строк. После завершения цикла нужно добавить к счетчику единицу, чтобы учлась последняя строка.


 
Zz_   (2003-05-12 17:10) [5]

Гы

var m:TMemo;
begin
m := TMemo.Create(Self);
m.Parent := Self;
m.Font := Label1.Font;
m.WordWrap := True;
m.ClientWidth := label1.Width;
m.Lines.Clear;
m.lines.Add(Label1.Caption);
MessageBox(0,PChar(IntToStr(m.Lines.Count)),"",0);
m.free;


 
Ler   (2003-05-12 17:11) [6]

2 deedlit

Чего-то я совсем Тебя не понял...



 
UserMicc   (2003-05-12 17:16) [7]

2 Ler (12.05.03 17:11)

Он говорит, что в цикле вставляй новые строчки с переводок коретки.. Потом же считай число "кореток" чтобы узнать число строк...


 
Ler   (2003-05-12 17:22) [8]

Не ребят, не пойдет. Дело в том, что я пишу свой компонент у которого Label только составная часть. Т.е. выглядит это примерно так: на панели лежит лейбл и в зависимости от высоты лейбла строится высота панельки (ну что-то типа AutoHeight для панели). Высота лейбла определяется количеством строк.
Извините за некоторый сумбур в объяснении.


 
deedlit   (2003-05-12 17:29) [9]

Или, ты имеешь в виду - узнать, сколько строк поместитеся на Label1 при текущих размерах? Попробуй Label1.Height div Label1.Canvas.TextHeight("ЛЮБОЙ ТЕКСТ"), то есть высоту компоненты нацело поделить на высоту строчки текста (ее тебе вернет TextHeight), отрисованного на его канве.


 
Ler   (2003-05-13 10:02) [10]

Ну так есть еще варианты ???
Напрягайте мозги, ПРОФИ !!!


 
dtrn   (2003-05-13 10:43) [11]

Length(Label1.Caption)


 
Ler   (2003-05-13 13:22) [12]

2 dtrn

???


 
default   (2003-05-13 14:33) [13]

ты вопрос нормально поставь
а то никто тебя не понимает...


 
Юрий Федоров   (2003-05-13 14:57) [14]

kull © (12.05.03 17:04)
А если взять ClientHeight и высоту фонта и поделить?



 
Sandman25   (2003-05-13 15:59) [15]

Либо как написал Zz_ (12.05.03 17:10)
Либо посмотри исходник TCustomLabel в StdCtrls, ознакомься DrawText из WinAPI, и напиши наследника от CustomLabel, который будет пересчитывать значение, возвращаемое DrawText, в количество строк и записывать его в новом property.


 
mukha   (2003-05-13 22:03) [16]

В run-time создай текстовое поле с такими же размерами как и сама метка и загрузи в него текст из memo с таким же шрифтом. Кол-во строк в memo определяется без труда, что будет соотв. к-ву строк в метке.


 
DK   (2003-05-14 03:30) [17]

Если Ты используешь стандартный лейбл, то можно просто установить AutoSize и после установки Caption, высота установится автоматически. Останется только прочитать это значение и установить высоту панельки


 
R   (2003-05-14 04:24) [18]

procedure TForm1.Button1Click(Sender: TObject);
var
S,S1:String;
I:Integer;
begin
S:= Memo1.text;
For I:=1 To Length(Memo1.text) do
If S[I]="-" Then S1:= S1+S[I]+#10#13 Else S1:= S1+S[I];
Label1.Caption:=S1;
Panel1.Height:= Label1.Height;//Вот нужный код остальное тест
Text:=IntToStr(Label1.Height);
end;


 
LexusR   (2003-05-14 07:52) [19]


function TForm1.GetCountLines(MyLabel: TLabel): integer;
var
Memo : TMemo;
begin
with TMemo.Create(Self) do
begin
ParentWindow := Application.MainForm.Handle;
Visible := false;
Width := MyLabel.Width;
Height := MyLabel.Height;
BorderStyle := bsNone;
WordWrap := true;
Text := MyLabel.Caption;
Result := Lines.count;
Free;
end;
end;



 
Ler   (2003-05-14 10:40) [20]

Спасибо Всем !!!



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

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

Наверх





Память: 0.49 MB
Время: 0.011 c
6-83638
Danger
2003-03-29 17:11
2003.05.26
TWebBrowser


1-83499
natasha
2003-05-15 14:28
2003.05.26
как корректно закрыть формочку?


14-83731
voland0
2003-05-07 09:26
2003.05.26
Переход с 4 версии Delphi на 7 - ю


6-83646
acsoft
2003-03-26 06:50
2003.05.26
Нажатие кнопки на HTML-странице в TWebBrowser


1-83573
xman
2003-05-13 11:48
2003.05.26
16 бит в трее





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