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

Вниз

Многострочный Caption   Найти похожие ветки 

 
Не молодой   (2005-11-15 15:14) [0]

у CheckBox (RadioButton), как у Label. Как организовать это, например, присвоить из Memo.Text?
Спасибо


 
Ega23 ©   (2005-11-15 15:18) [1]

У TCheckBox, AFAIK, никак. по крайней мере, стандартными способами. Хотя если задаться целью, то, наверное, можно.
У TLabel - AutoSize:=False; WordWrap:=True;


 
Не молодой   (2005-11-15 15:25) [2]

С TLabel без проблем (это видно из вопроса). Слишком сложный способ искать тоже нет особого резона (это не самоцель, никто не заставляет). Хотелось сделать не совсем обычный интерфейс (ну да ладно). Поместил в "Начинающим", поскольку подумал, что кто-то давно уже решил этот вопрос:(


 
Ega23 ©   (2005-11-15 15:50) [3]


> Хотелось сделать не совсем обычный интерфейс


Единственное, что могу посоветовать - попробуй бесплатных компонентов поискать.
А вообще - чем проще - тем лучше.


 
Плохиш ©   (2005-11-15 16:07) [4]


> Не молодой   (15.11.05 15:25) [2]

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


 
Ega23 ©   (2005-11-15 16:19) [5]


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


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


 
Leonid Troyanovsky ©   (2005-11-15 16:38) [6]


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


 
Antonn ©   (2005-11-15 16:40) [7]

Плохиш ©   (15.11.05 16:07) [4]
Делаешь чекбокс без текста и рядом помещаешь лабель.

чекбокс и на капшн реагирует, пользователь может быть удивлен.
Я когда то с лаболом такое делал: открывал dfm, и искаль нужный лабел, разбивал капшн на строки(как мне нужно) и в конце каждой строки ставил #13#10.
в итоге был перенос на новую строку (в D5 врапа небыло:))


 
Antonn ©   (2005-11-15 16:51) [8]

Antonn ©   (15.11.05 16:40) [7]
Я когда то с лаболом такое делал: открывал dfm, и искаль нужный лабел, разбивал капшн на строки(как мне нужно) и в конце каждой строки ставил #13#10.
в итоге был перенос на новую строку (в D5 врапа небыло:))

хренушки, факир был пьян, и фокус не удался...
:)


 
Не молодой   (2005-11-15 17:47) [9]

>Плохиш ©   (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;


 
Leonid Troyanovsky ©   (2005-11-15 17:56) [10]


> Не молодой   (15.11.05 17:47) [9]

>  то есть сработает ли также:
> Caption := Memo.Text;


Пуркуа бы не па.
Только, менять надо Height (Width), а может и Left(Top) ,
дабы все уместилось.

--
Regards, LVT.


 
Не молодой   (2005-11-15 18:10) [11]

>Leonid Troyanovsky ©   (15.11.05 17:56) [10]
Спасибо, Height, менять естественно, но это не проблема, что-то типа
Memo.LineCount*FontHeight (естественно это примерно:)
Там подумаю ...


 
Не молодой   (2005-11-16 16:45) [12]

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  :(
Похоже утомил столь длинным постом :(


 
Leonid Troyanovsky ©   (2005-11-16 17:25) [13]


> Не молодой   (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 17:45) [14]

Собственно делал такие попытки - не получилось. Если не возражаете, (а то получается "диалог" какой-то, а не форум:), детали постараюсь "выжать" из Вас по мылу. Думаю участники ветки возражать не будут.
Если нет возражений, ответьте постом
Количество ран-тайм контролов "заранее" неизвестно, то есть переменно, в проекте это приходится делать несколько раз в цикле по несколько контролов - освобождать не забываю


 
злобная танька ©   (2005-11-16 17:58) [15]


> Не молодой   (16.11.05 17:45) [14]

если кол-во контролов переменно то  вместо дин массива лучше использовать TObjectList


 
Не молодой   (2005-11-16 18:14) [16]

Спасибо. Подумаю...


 
Leonid Troyanovsky ©   (2005-11-16 18:30) [17]


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


 
begin...end ©   (2005-11-16 18:33) [18]

BS_MULTILINE и через SetWindowLong ставится. Вроде бы.


 
Пришлый   (2005-11-16 18:43) [19]

Всем спасибо, советы "подбираю" и пользуюсь.
А как быть с OnClick, как его "привязать"?

> Если контрол создается динамически, то назначению одного
> и того же
> OnClick можно предпочесть написание контролу procedure Click;
>  override;
> (не забыть inherited).

Где это делать (в какой секции), ибо я пытался, но ничего путного не получилось:(
>begin...end ©   (16.11.05 18:33) [18]
На вскидку красиво, попытаюсь


 
Leonid Troyanovsky ©   (2005-11-16 18:44) [20]


> begin...end ©   (16.11.05 18:33) [18]
> BS_MULTILINE и через SetWindowLong ставится. Вроде бы.


Можно.
А вот BM_SETSTYLE, AFAIK, не срабатывает.

--
Regards, LVT.


 
Не молодой   (2005-11-16 18:45) [21]

Извините, из "потрепаться" вышел с другим ником:(


 
Leonid Troyanovsky ©   (2005-11-16 18:50) [22]


> Пришлый   (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:56) [23]

>Leonid Troyanovsky ©   (16.11.05 18:50) [22]
Вроде бы понятно, спасибо. Работать с кодом буду уже завтра


 
Не молодой   (2005-11-17 16:22) [24]

Всем СПАСИБО, особенно Leonid Troyanovsky ©
На то о чем спрашивал, получил полный расширенный ответ!



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

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

Наверх





Память: 0.51 MB
Время: 0.072 c
14-1131788530
ronyn
2005-11-12 12:42
2005.12.04
Linux


11-1112871733
Fanny
2005-04-07 15:02
2005.12.04
Утечки памяти в проектах KOL/MCK


2-1132341339
AuBaH
2005-11-18 22:15
2005.12.04
проблема с кнопками


11-1113244167
Sup
2005-04-11 22:29
2005.12.04
KOLThread help


1-1131272986
maxXP
2005-11-06 13:29
2005.12.04
Эмкляция щелчка мыши





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