Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Многострочный Caption [D5, 95/98, 2000]


Страницы:   1 2

Не молодой ©   (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]


> Делаешь чекбокс без текста и рядом помещаешь лабель.


Тоже вариант.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо