<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680616</guid>
        <pubDate>Fri, 27 Aug 2010 09:52:00 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680616</link>
        <description><![CDATA[SkAndriy: Извините, все работает. просто модуль компонента перенес в вверх. Спасибо]]></description>
        <author>SkAndriy</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680613</guid>
        <pubDate>Fri, 27 Aug 2010 09:49:35 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680613</link>
        <description><![CDATA[DimaBr: Я же написал в виде функции, чем она вас не устраивает ?<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function TIndexListProperty.MyComponent: TMyComponent;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := GetComponent(0) as TMyComponent;</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>DimaBr</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680587</guid>
        <pubDate>Fri, 27 Aug 2010 09:28:22 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680587</link>
        <description><![CDATA[SkAndriy: <strong class='tag-b'>DimaBr</strong><br>
Все заработало, только редактор свойств я перенес в отдельный модуль, не компилируется иначе.<br>
<br>
редактор свойств в отдельном модуле<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TIndexListProperty = class(TPropertyEditor)</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;function GetValue: string; override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure SetValue(const Value: string); override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;function GetAttributes: TPropertyAttributes; override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure GetValues(Proc: TGetStrProc); override;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">.........................................................</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Register;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;RegisterComponents(&#39;test&#39;, [TMyComponent]);</div><div class="code_line">&nbsp;&nbsp;RegisterPropertyEditor(TypeInfo(Integer), TMyComponent, &#39;IndexList&#39;, TIndexListProperty);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TIndexListProperty.GetAttributes: TPropertyAttributes;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := [paValueList, paRevertable];</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TIndexListProperty.GetValue: string;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Obj: TPersistent;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Obj := GetComponent(0);</div><div class="code_line">&nbsp;&nbsp;if Assigned(Obj) and (Obj is TMyComponent) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;with TMyComponent(Obj) do</div><div class="code_line">&nbsp;&nbsp;Result := fList[GetOrdValue];</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TIndexListProperty.GetValues(Proc: TGetStrProc);</div><div class="code_line">var i: integer;</div><div class="code_line">Obj: TPersistent;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Obj := GetComponent(0);</div><div class="code_line">&nbsp;&nbsp;if Assigned(Obj) and (Obj is TMyComponent) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;with TMyComponent(Obj) do</div><div class="code_line">&nbsp;&nbsp;for i := 0 to fList.Count-1 do</div><div class="code_line">&nbsp;&nbsp; &nbsp;Proc(fList[i]);</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
все работает, но к в каждой функции или процедуре нужно писать:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Obj: TPersistent;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Obj := GetComponent(0);</div><div class="code_line">&nbsp;&nbsp;if Assigned(Obj) and (Obj is TMyComponent) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; with TMyComponent(Obj) do</div></ol></div></div></div></div><br>
<br>
Это можно как то один раз где-то указать или нет?<br>
<br>
Спасибо]]></description>
        <author>SkAndriy</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680564</guid>
        <pubDate>Fri, 27 Aug 2010 09:13:44 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680564</link>
        <description><![CDATA[leo: Я уже ва-аще ниче не понимаю  :wacko: Как связаны (или должны быть) между собой MyPropertyList и IndexDown ? Объясни словами, что ты хочешь в итоге получить <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-08-27T09:27:43+00:00">27.08.10, 09:27</time></span></span><br>
PS: Если MyPropertyList и IndexDown однозначно связаны между собой через какой-то список значений, то 1) их соотв-е нужно задавать в процедурах установки св-ва Set.., чтобы изменение одного приводило к автоустановке другого, 2) незачем оба св-ва делать published, т.к. это просто лишняя работа, не имеющая никакого отношения к науке ;)]]></description>
        <author>leo</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680552</guid>
        <pubDate>Fri, 27 Aug 2010 09:03:20 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680552</link>
        <description><![CDATA[SkAndriy: Попробовал сделать так:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TIndexProperty = class (TEnumProperty)</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;function GetAttributes: TPropertyAttributes; override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure GetValues(Proc: TGetStrProc); override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Edit; override;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TMyProperty = class (TStringProperty)</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;function GetAttributes: TPropertyAttributes; override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure GetValues(Proc: TGetStrProc); override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Edit; override;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Register;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;RegisterComponents(&#39;test&#39;, [TMyComponent]);</div><div class="code_line">&nbsp;&nbsp;RegisterPropertyEditor(TypeInfo(Integer), TMyComponent, &#39;MyOptions&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;TMySetTypeProperty);</div><div class="code_line">&nbsp;&nbsp;RegisterPropertyEditor (TypeInfo(string), TMyComponent, &#39;MyPropertyList&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;TMyProperty);</div><div class="code_line">&nbsp;&nbsp;RegisterPropertyEditor(TypeInfo(Integer), TMyComponent, &#39;IndexDown&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;TIndexProperty);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">...............................</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TIndexProperty.GetValues(Proc: TGetStrProc);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;i : Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;for i := 0 to High(MyArray) do</div><div class="code_line">&nbsp;&nbsp; &nbsp;Proc(MyArray[i]);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TIndexProperty.Edit;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;DialogForm := TDialogForm.Create(nil);</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;DialogForm.ComboBox1.ItemIndex := GetOrdValue;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// show the dialog box</div><div class="code_line">&nbsp;&nbsp; &nbsp;if DialogForm.ShowModal = mrOK then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SetOrdValue(vForm.EomboBox1.ItemIndex);</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;DialogForm.Free;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TIndexProperty.GetAttributes: TPropertyAttributes;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;// editor, sorted list, multiple selection</div><div class="code_line">&nbsp;&nbsp;Result := [paDialog];</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">//=======================</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TSoundProperty.GetValues(Proc: TGetStrProc);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;i : Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;for i := 0 to High(TimeZone) do</div><div class="code_line">&nbsp;&nbsp; &nbsp;Proc(TimeZone[i]);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TSoundProperty.Edit;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;SoundForm := TSoundForm.Create(nil);</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;SoundForm.ElComboBox1.Text := GetValue;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// show the dialog box</div><div class="code_line">&nbsp;&nbsp; &nbsp;if SoundForm.ShowModal = mrOK then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SetOrdValue(SoundForm.ElComboBox1.Text);</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;SoundForm.Free;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TSoundProperty.GetAttributes: TPropertyAttributes;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := [paDialog];</div><div class="code_line">end;</div></ol></div></div></div></div><br>
Каждый из редакторов работает.Но работает в отдельномссти. А как их объеденить или при вызове одного чтобы срабатывал и другой и оба поля свойств MyPropertyList и IndexDown имели одновременно значения соответствующие выделенному итему. Что добавитть к коду или как его изменить. Спасибо.]]></description>
        <author>SkAndriy</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680544</guid>
        <pubDate>Fri, 27 Aug 2010 08:55:13 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680544</link>
        <description><![CDATA[DimaBr: Зачем вам диалог ?<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">type</div><div class="code_line">TMyComponent = class(TComponent)</div><div class="code_line">&nbsp;&nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp;fList: TStrings;</div><div class="code_line">&nbsp;&nbsp; &nbsp;fIndexList: integer;</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;constructor Create(AOwner: TComponent);override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;destructor Destroy;override; &nbsp; </div><div class="code_line">&nbsp;&nbsp;published</div><div class="code_line">&nbsp;&nbsp; &nbsp;property IndexList: integer read fIndexList write fIndexList;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">TIndexListProperty = class(TPropertyEditor)</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;function GetValue: string; override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure SetValue(const Value: string); override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;function GetAttributes: TPropertyAttributes; override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure GetValues(Proc: TGetStrProc); override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;function MyComponent: TMyComponent;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Register;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;RegisterComponents(&#39;test&#39;, [TMyComponent]);</div><div class="code_line">&nbsp;&nbsp;RegisterPropertyEditor(TypeInfo(Integer), TMyComponent, &#39;IndexList&#39;, TIndexListProperty);</div><div class="code_line">end; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">{ TMyComponent }</div><div class="code_line">&nbsp;</div><div class="code_line">constructor TMyComponent.Create(AOwner: TComponent);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited;</div><div class="code_line">&nbsp;&nbsp;fList := TStringList.Create;</div><div class="code_line">&nbsp;&nbsp;fList.Add(&#39;aaa&#39;);</div><div class="code_line">&nbsp;&nbsp;fList.Add(&#39;bbb&#39;);</div><div class="code_line">&nbsp;&nbsp;fList.Add(&#39;ccc&#39;);</div><div class="code_line">&nbsp;&nbsp;fList.Add(&#39;ddd&#39;);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">destructor TMyComponent.Destroy;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;fList.Free;</div><div class="code_line">&nbsp;&nbsp;inherited;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">{ TIndexListProperty }</div><div class="code_line">&nbsp;</div><div class="code_line">function TIndexListProperty.GetAttributes: TPropertyAttributes;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := [paMultiSelect, paValueList, paRevertable];</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TIndexListProperty.GetValue: string;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := MyComponent.fList[GetOrdValue];</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TIndexListProperty.GetValues(Proc: TGetStrProc);</div><div class="code_line">var i: integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;for i := 0 to MyComponent.fList.Count-1 do</div><div class="code_line">&nbsp;&nbsp; &nbsp;Proc(MyComponent.fList[i]);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TIndexListProperty.MyComponent: TMyComponent;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := GetComponent(0) as TMyComponent;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TIndexListProperty.SetValue(const Value: string);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;SetOrdValue(MyComponent.fList.IndexOf(Value));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">end.</div></ol></div></div></div></div>]]></description>
        <author>DimaBr</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680536</guid>
        <pubDate>Fri, 27 Aug 2010 08:41:36 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680536</link>
        <description><![CDATA[SkAndriy: Теперь Вы меня не понимаете.<br>
Я использовал диалог в редакторе свойств. работает отлично и в свойство компонента заносит стровый элемент из списка/массива прекрасно, но в дополнении к тому мне нужен и индекс этого элемента. Вот код в дополнение к предыдущему:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TSMyProperty = class (TStringProperty)</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;function GetAttributes: TPropertyAttributes; override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// procedure GetValues(Proc: TGetStrProc); override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Edit; override;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Register;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;RegisterComponents(&#39;test&#39;, [TMyComponent]);</div><div class="code_line">&nbsp;&nbsp;RegisterPropertyEditor (TypeInfo(string), TMyComponent, &#39;MyPropertyList&#39;, TSoundProperty);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TSoundProperty.GetAttributes: TPropertyAttributes;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := [paDialog];</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TMyProperty.Edit;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;DialogForm := TDialogForm.Create(nil);</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;DialogForm.ComboBox1.Text := GetValue;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// show the dialog box</div><div class="code_line">&nbsp;&nbsp; &nbsp;if DialogForm.ShowModal = mrOK then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SetValue(DialogForm.ComboBox1.Text);</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;DialogForm.Free;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
Как теперь используя редактор свойст передать индекс выделенного итема. Пробоовал добавить в процедуру Edit  SetOrdValue(DialogForm.ComboBox1.ItemIndex) - не работает вообще. Что нужно добавить в редактор, чтобы это сработало. Спасибо.]]></description>
        <author>SkAndriy</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680534</guid>
        <pubDate>Fri, 27 Aug 2010 08:40:44 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680534</link>
        <description><![CDATA[DimaBr: Напишите редактор для свойства IndexMyProperty: integer, который и будет выпадающий список, а свойство MyPropertyList : String - лишнее]]></description>
        <author>DimaBr</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680518</guid>
        <pubDate>Fri, 27 Aug 2010 08:25:20 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680518</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311846&view=findpost&p=2680480'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SkAndriy &#064; <time class="tag-quote__quoted-time" datetime="2010-08-27T07:59:22+00:00">27.08.10, 07:59</time></span><div class='quote '>Понятно, тогда каким образом передать в совйство индекс выделенного итема</div></div><br>
Похоже, что не понятно. В случае TStrings диалог вызывается для редактирования не каждого отдельного итема, а всего списка - получаешь на входе все строки из св-ва, сохраняешь их в каком-то листбоксе или мемо диалога, затем юзер что-то там добавляет&#092;меняет и при закрытии диалога <strong class='tag-b'>все</strong> строки записываются обратно в список. Поэтому никаких проблем с индексами тут нет]]></description>
        <author>leo</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680480</guid>
        <pubDate>Fri, 27 Aug 2010 07:59:22 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680480</link>
        <description><![CDATA[SkAndriy: Понятно, тогда каким образом передать в совйство индекс выделенного итема. Допустим в свойство Str я передал строковую форму, а как в свойство IndexStr из диалоговой формы выбора передать индекс выделенного итема? Что нужно добавить в процедуру Edit редактора свойств. Если можно небольшой пример. Спасибо]]></description>
        <author>SkAndriy</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680450</guid>
        <pubDate>Fri, 27 Aug 2010 07:25:35 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680450</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311846&view=findpost&p=2680433'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SkAndriy &#064; <time class="tag-quote__quoted-time" datetime="2010-08-27T07:02:51+00:00">27.08.10, 07:02</time></span><div class='quote '>Вы предлагаете занести массив в StringList </div></div><br>
Я предлагаю выкинуть массив и заменить его на TStrings - при этом обращение к св-вy Str[i] останется тем же самым. <br>
Редактировать непосредственно в инспекторе каждый элемент TStrings нельзя - нужно вызывать некий диалог и уже в этом диалоге делай что хочешь - можешь сразу весь список показывать (как в стандартном), можешь задать отдельное поле для индекса и отдельный комбобокс со значениями и т.д. и т.п. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-08-27T07:30:08+00:00">27.08.10, 07:30</time></span></span><br>
PS: Как ни крути, а св-ва массивы не поддерживаются в дизайне потому, что нет способа сохранить их в dfm-файле формы и затем загрузить. А для TStrings сохраняется и загружается единый текст TStrings.Text]]></description>
        <author>leo</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680433</guid>
        <pubDate>Fri, 27 Aug 2010 07:02:51 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680433</link>
        <description><![CDATA[SkAndriy: Я не совсем понимаю Вашу мысль. Вы предлагаете занести массив в StringList и затем в модуле компонента просто искать по строке выбранного в редакторе свойств элемента? Есть еще варианты, может есть несколько иное решение? Например, вызвать модальную форму с занесенным в нее списком массива, но как из нее получить индекс выбранного элемента? Спасибо.]]></description>
        <author>SkAndriy</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680424</guid>
        <pubDate>Fri, 27 Aug 2010 06:48:41 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680424</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311846&view=findpost&p=2680414'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SkAndriy &#064; <time class="tag-quote__quoted-time" datetime="2010-08-27T06:31:44+00:00">27.08.10, 06:31</time></span><div class='quote '>но как узнать и передать в свойство IndexMyProperty порядковый индекс выбранного в списке (массиве) элемента</div></div><br>
Никак. Для свойств-массивов типа Str[Index: Integer]:string задание значений в инспекторе не поддерживается. Нужно вместо массива юзать список строк Str:TStrings, а чтобы прикрутить к нему выбор значений из своего списка, то нужно изменить реализацию TStringListProperty, переопредилив в нем тип диалога со стандартного TStrEditDlg на какой-то свой (см. StrEdit.pas) <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-08-27T06:59:31+00:00">27.08.10, 06:59</time></span></span><br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray">:offtop:<br>
Похоже ты решил забить на научную работу и увязнуть в дебрях проперти-эдиторов ;)</span>]]></description>
        <author>leo</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680414</guid>
        <pubDate>Fri, 27 Aug 2010 06:31:44 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680414</link>
        <description><![CDATA[SkAndriy: Доброе утро всем&#33;<br>
<br>
Я так и сделал:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">unit MyComponent;</div><div class="code_line">&nbsp;</div><div class="code_line">TMyComponent = class(TComponent)</div><div class="code_line">&nbsp;</div><div class="code_line">................................</div><div class="code_line">published</div><div class="code_line">&nbsp;&nbsp; &nbsp;property MyPropertyList : String read FMyPropertyList write FMyPropertyList;</div><div class="code_line">&nbsp;&nbsp; &nbsp;property IndexMyProperty : Integer read FIndexMyProperty write FIndexMyProperty;</div><div class="code_line">.........................</div><div class="code_line">&nbsp;</div><div class="code_line">unit &nbsp;MyPropertyEditor;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TMyProperty = class (TStringProperty)</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;function GetAttributes: TPropertyAttributes; override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure GetValues(Proc: TGetStrProc); override;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// procedure Edit; override;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Register;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;RegisterComponents(&#39;test&#39;, [TMyComponent]);</div><div class="code_line">&nbsp;&nbsp;RegisterPropertyEditor (TypeInfo(string), TMyComponent, &#39;MyPropertyList&#39;, TMyProperty);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TMyProperty.GetValues(Proc: TGetStrProc);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;i : Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;for i := 0 to High(MyArrayOfString) do</div><div class="code_line">&nbsp;&nbsp; &nbsp;Proc(MyArrayOfString[i]);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TMy.GetAttributes: TPropertyAttributes;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := [paValueList];</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
Выпадающий список строковых значени своего массива получил, но как узнать и передать в свойство IndexMyProperty порядковый индекс выбранного в списке (массиве) элемента. Например, я выбрал в выпадающем списке элемент №3. Мне нужно занести его индекс в свойство IndexMyProperty и обработать на это свое событие. Как это можно сделать. Что необходимо добавить в редактор свойств, чтобы фиксировать выбранный номер выбранного элемента в списке. Спасибо всем.]]></description>
        <author>SkAndriy</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680413</guid>
        <pubDate>Fri, 27 Aug 2010 06:25:39 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680413</link>
        <description><![CDATA[DimaBr: Посмотрите как реализовано TFontNameProperty или TFontCharsetProperty в VCLEditors]]></description>
        <author>DimaBr</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680399</guid>
        <pubDate>Fri, 27 Aug 2010 05:59:46 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680399</link>
        <description><![CDATA[leo: 1) Чтобы св-во появилось в инспекторе, его нужно объявлять в секции published (а не public)<br>
2) Для задания выпадающего списка значений нужно <br>
a) создать свой класс - наследник от DesignEditors.TStringProperty и переопределить в нем методы GetAttributes (указать наличие списка paValueList) и GetValues (заполнение списка)<br>
б) связать нужное св-во с созданным классом, вызвав RegisterPropertyEditor в секции initialization модуля <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-08-27T06:21:51+00:00">27.08.10, 06:21</time></span></span><br>
Похоже нужно уточнить задачу, т.к. ты путаешь св-во как массив&#092;список значений типа TListBox.Items, и просто одну строку, значение которой можно выбирать из списка типа TFont.Name]]></description>
        <author>leo</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680268</guid>
        <pubDate>Thu, 26 Aug 2010 19:13:35 +0000</pubDate>
        <title>Как создать свойство типа подсвойства Name у свойства Font класса TFont?</title>
        <link>https://forum.sources.ru/index.php?showtopic=311846&amp;view=findpost&amp;p=2680268</link>
        <description><![CDATA[SkAndriy: Добрый вечер&#33;<br>
<br>
В моей задаче необходимо показать в свойстве компонента список значений из массива строк. В инете нашел пример:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">TMyClass = class(TComponent)</div><div class="code_line">private</div><div class="code_line">&nbsp;&nbsp;FStr: array of string;</div><div class="code_line">protected</div><div class="code_line">&nbsp;&nbsp;procedure SetStr(Index: Integer; Value: string);</div><div class="code_line">&nbsp;&nbsp;function GetStr(Index: Integer): string;</div><div class="code_line">public</div><div class="code_line">&nbsp;&nbsp;property Str[Index: Integer]: string read GetStr write SetStr;</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TMyClass.SetStr(Index: Integer; Value: string);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;FStr[Index] := Value;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TMyClass.GetStr(Index: Integer): string;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;result := FStr[Index];</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
Но, если использовать этот код, то в при подготовке проекта в инспекторе объекта этого свойства нет.<br>
Мне необходимо создать свойство типа подсвойства Name у свойства Font класса TFont, в котором приведены для выбора названия шрифтов.<br>
<br>
Спасибо за помощь.]]></description>
        <author>SkAndriy</author>
        <category>Delphi: Разработка компонентов</category>
      </item>
	
      </channel>
      </rss>
	