Главная страница
    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.008 c
3-3744
rh
2003-09-12 12:46
2003.10.02
Какой пользователь в MS SQL?


1-3894
Goga
2003-09-18 13:46
2003.10.02
Дублирование объекта


1-3909
SergeyM
2003-09-20 21:16
2003.10.02
Оператор if


3-3782
inwin
2003-09-11 14:43
2003.10.02
Как записать Blob в файл


14-4085
V.exeR
2003-09-15 00:37
2003.10.02
Как поменять сведения в своем profile на этом сайте?





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