![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Многострочный Caption [D5, 95/98, 2000]
Не молодой © (2005-11-15 15:14:00)у CheckBox (RadioButton), как у Label. Как организовать это, например, присвоить из Memo.Text?
Спасибо
Не молодой (2005-11-17 16:22:00) [1]Всем СПАСИБО, особенно Leonid Troyanovsky ©
На то о чем спрашивал, получил полный расширенный ответ!
Не молодой (2005-11-16 18:56:00) [2]>Leonid Troyanovsky © (16.11.05 18:50) [22]
Вроде бы понятно, спасибо. Работать с кодом буду уже завтра
Leonid Troyanovsky (2005-11-16 18:50:00) [3]
> Пришлый (16.11.05 18:43) [19]
> Click; override;
> Где это делать (в какой секции), ибо я пытался, но ничего
> путного не получилось:(
type
TCB = class(TCheckBox)
public
procedure CreateParams(var Params: TCreateParams); override;
procedure Click; override;
procedure DoSomethingOnClick;
end;
..
procedure TCB.Click;
begin
inherited;
DoSomethingOnClick;
end;
procedure TCB.DoSomeThingOnClick;
begin
..
end;
--
Regards, LVT.
Не молодой (2005-11-16 18:45:00) [4]Извините, из "потрепаться" вышел с другим ником:(
Leonid Troyanovsky (2005-11-16 18:44:00) [5]
> begin...end © (16.11.05 18:33) [18]
> BS_MULTILINE и через SetWindowLong ставится. Вроде бы.
Можно.
А вот BM_SETSTYLE, AFAIK, не срабатывает.
--
Regards, LVT.
Пришлый (2005-11-16 18:43:00) [6]Всем спасибо, советы "подбираю" и пользуюсь.
А как быть с OnClick, как его "привязать"?
> Если контрол создается динамически, то назначению одного
> и того же
> OnClick можно предпочесть написание контролу procedure Click;
> override;
> (не забыть inherited).
Где это делать (в какой секции), ибо я пытался, но ничего путного не получилось:(
>begin...end © (16.11.05 18:33) [18]
На вскидку красиво, попытаюсь
begin...end (2005-11-16 18:33:00) [7]BS_MULTILINE и через SetWindowLong ставится. Вроде бы.
Leonid Troyanovsky (2005-11-16 18:30:00) [8]
> Не молодой (16.11.05 17:45) [14]
> Количество ран-тайм контролов "заранее" неизвестно, то есть
> переменно, в проекте это приходится делать несколько раз
> в цикле по несколько контролов - освобождать не забываю
Вообще-то, массив контролов уже есть - у Parent, f.e., CoolBar1.
Если там есть что-то лишнее, то отобрать нужное можно путем
if Controls[i] is TCheckBox then with TCheckBox(Controls[i]) do..
Для идентификации можно использовать Name, Tag & etc.
Ну, а поговорить можно и здесь. Бо может и другим пригодится.
Или я, например, заврусь ;)
--
Regards, LVT.
Не молодой (2005-11-16 18:14:00) [9]Спасибо. Подумаю...
злобная танька (2005-11-16 17:58:00) [10]
> Не молодой (16.11.05 17:45) [14]
если кол-во контролов переменно то вместо дин массива лучше использовать TObjectList
Не молодой (2005-11-16 17:45:00) [11]Собственно делал такие попытки - не получилось. Если не возражаете, (а то получается "диалог" какой-то, а не форум:), детали постараюсь "выжать" из Вас по мылу. Думаю участники ветки возражать не будут.
Если нет возражений, ответьте постом
Количество ран-тайм контролов "заранее" неизвестно, то есть переменно, в проекте это приходится делать несколько раз в цикле по несколько контролов - освобождать не забываю
Leonid Troyanovsky (2005-11-16 17:25:00) [12]
> Не молодой (16.11.05 16:45) [12]
> Не хватает знаний для присвоения события OnClick
Если контрол создается динамически, то назначению одного и того же
OnClick можно предпочесть написание контролу procedure Click; override;
(не забыть inherited).
> И кроме того хотелось реализовать
> CheckBoxes = Array [0..19] of TCB;
> и
> CBX: CheckBoxes; //в каком месте это определять?
Это естественно делать в объявлении формы, т.е. CBX - поле формы.
> Как в этом случае динамически создавать контролы
Например, в OnCreate формы, CheckBoxes[i] := TCB.Create(..).
--
Regards, LVT.
Не молодой (2005-11-16 16:45:00) [13]
type
TCB = class(TCheckBox)
public
procedure CreateParams(var Params: TCreateParams); override;
end;
procedure TCB.CreateParams;
begin
inherited;
Params.Style := Params.Style or BS_MULTILINE;
end;
....
with TCB.Create(nil) do
begin
Parent := CoolBar1;
Height := Height * 2;
Font.Size:= 10;
Font.Color:= clBlack;
Color:= clInfoBk;
Caption := Memo1.Text;
end;
....
Все это работает прекрасно (Спасибо Leonid Troyanovsky © (15.11.05 16:38) [6] ...). Не хватает знаний для присвоения события OnClick
И кроме того хотелось реализовать
CheckBoxes = Array [0..19] of TCB;
и
CBX: CheckBoxes;//в каком месте это определять?
Как в этом случае динамически создавать контролы, на
CBX[i].Create(nil)получаю Access Violation ... Read of Address 00000000 :(
Похоже утомил столь длинным постом :(
Не молодой (2005-11-15 18:10:00) [14]>Leonid Troyanovsky © (15.11.05 17:56) [10]
Спасибо, Height, менять естественно, но это не проблема, что-то типа
Memo.LineCount*FontHeight (естественно это примерно:)
Там подумаю ...
Leonid Troyanovsky (2005-11-15 17:56:00) [15]
> Не молодой (15.11.05 17:47) [9]
> то есть сработает ли также:
> Caption := Memo.Text;
Пуркуа бы не па.
Только, менять надо Height (Width), а может и Left(Top) ,
дабы все уместилось.
--
Regards, LVT.
Не молодой (2005-11-15 17:47:00) [16]>Плохиш © (15.11.05 16:07) [4]
У меня прежде было похоже CheckBox и Memo (в вопросе, я не случайно привел в качестве примера), хотелось изменить
>Leonid Troyanovsky © (15.11.05 16:38) [6]
Caption := 'line1'#13#10'line2';
А есть ли возможность, действительно, "достать" из Memo, а не руками вводить #13#10 ?
Проверить к сожалению не успел, только подошел к компьютеру, то есть сработает ли также:
Caption := Memo.Text;
Antonn (2005-11-15 16:51:00) [17]Antonn © (15.11.05 16:40) [7]
Я когда то с лаболом такое делал: открывал dfm, и искаль нужный лабел, разбивал капшн на строки(как мне нужно) и в конце каждой строки ставил #13#10.
в итоге был перенос на новую строку (в D5 врапа небыло:))
хренушки, факир был пьян, и фокус не удался...
:)
Antonn (2005-11-15 16:40:00) [18]Плохиш © (15.11.05 16:07) [4]
Делаешь чекбокс без текста и рядом помещаешь лабель.
чекбокс и на капшн реагирует, пользователь может быть удивлен.
Я когда то с лаболом такое делал: открывал dfm, и искаль нужный лабел, разбивал капшн на строки(как мне нужно) и в конце каждой строки ставил #13#10.
в итоге был перенос на новую строку (в D5 врапа небыло:))
Leonid Troyanovsky (2005-11-15 16:38:00) [19]
> Не молодой (15.11.05 15:25) [2]
> интерфейс (ну да ладно). Поместил в "Начинающим", поскольку
> подумал, что кто-то давно уже решил этот вопрос:(
type
TCB = class(TCheckBox)
public
procedure CreateParams(var Params: TCreateParams); override;
end;
procedure TCB.CreateParams;
begin
inherited;
Params.Style := Params.Style or BS_MULTILINE;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with tcb.Create(nil) do
begin
Parent := Self;
Height := Height * 2;
Caption := 'line1'#13#10'line2';
end;
end;
--
Regards, LVT.
Ega23 (2005-11-15 16:19:00) [20]
> Делаешь чекбокс без текста и рядом помещаешь лабель.
Тоже вариант.