Вниз
Скачать: CL | DM;

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

 
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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.011 c
3-83419
AlexVitko
2003-05-06 18:25
2003.05.26
ПОИСК В БООЛЬШОЙ БД


1-83570
Ler
2003-05-12 16:34
2003.05.26
Ну Очень простой вопрос !!! (кол-во строк в лейбле )


1-83470
Johnmen
2003-05-15 09:57
2003.05.26
Каталог для инсталляции по умолчанию


3-83340
diokant
2003-05-05 15:35
2003.05.26
Подскажите по MS SQL 2000, почему так нельзя...


14-83670
Nick2000
2003-05-03 11:33
2003.05.26
Экзаменационное тестирование




   Наверх