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

Вниз

Как (или где) поймать изменение вводимых Items   Найти похожие ветки 

 
dataMaster   (2003-09-19 10:53) [0]

Всем привет! Пишу потомка от TRadioGroup с возможностью переноса строк в Items по заданному разделителю. Код:
unit dmRadioGroupML;

interface

uses
Windows, SysUtils, Classes, Controls, StdCtrls, ExtCtrls;

type
TdmRadioGroupML = class(TRadioGroup)
private
{ Private declarations }
FItemSeparator : string;
procedure SetLines;
protected
{ Protected declarations }
procedure CreateWnd ; override;
procedure DestroyWnd; override;
public
{ Public declarations }
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
property ItemSeparator:string read FItemSeparator write FItemSeparator;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents("My", [TdmRadioGroupML]);
end;

procedure TdmRadioGroupML.SetLines;
// процедура установки многострочности в Items
var
k : integer;
begin
FItemSeparator:= Trim(FItemSeparator);
for k:=0 to Items.Count-1 do
begin
Items[k]:=StringReplace(Items[k],
ItemSeparator,
#13#10,
[rfReplaceAll]+[rfIgnoreCase]);
SetWindowLong(TRadioButton(Controls[Items.IndexOf(Items[k])]).Handle,
GWL_STYLE,
GetWindowLong(TRadioButton(Controls[Items.IndexOf(Items[k])]).Handle,
GWL_STYLE) or BS_MULTILINE);
end;
end;

constructor TdmRadioGroupML.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
end;

destructor TdmRadioGroupML.Destroy;
begin
inherited Destroy;
end;

procedure TdmRadioGroupML.CreateWnd;
begin
inherited CreateWnd;
SetLines;
end;

procedure TdmRadioGroupML.DestroyWnd;
begin
inherited Destroy;
end;

end.


Проблема состоит в том, что при тестировании компонента в программе кодом

procedure TForm1.FormCreate(Sender: TObject);var
Rgm:TdmRadioGroupML;
begin
Rgm:=TdmRadioGroupML.Create(Form1);
with Rgm do begin
Parent:=Form1;
ItemSeparator:="@";
with Items do begin
Add("1@2@3");
Add("1@2");
Add("1@2@3");
end;
end;
end;


строки переносятся только после первого Add("1@2@3");. Вторая и третья команды Add("1@2"); и Add("1@2@3"); не обрабатываются. Не подскажете, что неправильно?


 
dataMaster   (2003-09-19 12:32) [1]

Неужели никто не поможет?


 
willys   (2003-09-19 13:44) [2]

SetLines у тебя вызывается при создании дескриптора компонента. т.е. всего один раз... а тебе надо перехватывать изменение Items.


 
dataMaster   (2003-09-19 13:56) [3]

2willys

И как это сделать?


 
dataMaster   (2003-09-19 18:12) [4]

Помогите кто-нибудь.


 
BOA_KAA   (2003-09-19 19:10) [5]

Создать обработчик события, которое будет возникать при изменении Items.Count. Или я неправильно вопрос понял?


 
REA   (2003-09-19 22:43) [6]

При создании там используется код:
FItems := TStringList.Create;
TStringList(FItems).OnChange := ItemsChange;

Это можно было бы использовать, если бы что-либо было в protected части, а так проще выдрать код компонента целиком и сделать свой обработчик ItemsChange.



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

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

Наверх





Память: 0.46 MB
Время: 0.01 c
3-3742
alexey
2003-09-12 13:15
2003.10.02
Как убивать сессии


1-3991
-=GaLaN=-
2003-09-19 17:00
2003.10.02
Dll и место ее нахождения.


3-3799
mfender
2003-09-11 01:10
2003.10.02
Как dataset сделать активным?


14-4069
Skywalker
2003-09-15 10:56
2003.10.02
Outlook


1-3971
Тих
2003-09-19 22:18
2003.10.02
Наследование форм от интерфейсов в Builder





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