Правила (условные конечно):
1. минимально-достаточный для понимания объём.
2. комментарии на схеме, ориентированные на новичков, но без фанатизма.
3. НЕ использовать "потусторонних" компонентов (не вошедших в дистрибутив), или со ссылкой.
4. максимальная подготовленность решения для вставления в проект. То есть например, используемые свойства элементов, имеющие одноимённые точки, не описывать в элементе, а подключать к точке глобальную переменную, имя переменной должно отображать её назначение, для того, чтобы было видно - какие нужны коррекции для правильной работы в составе проекта. Или обратить внимание прямым текстом - InfoTip.
5. Указывать ограничения компиляторов (Delphi/FPC), а также версию HiAsm и по возможности избегать сборок сделанных на "недистрибутивных" версиях (SVN, HiUpdate, ..)
Тема поможет (надеюсь) расширить список примеров, а главное - пополнить папку "tutorial" - спасение для новичков - нажал F1 на компоненте и вот тебе множество интересных идей, среди которых возможно и та, что нужна, а в конце ссылка на тему форума.. Комплектация таких справочных .sha ляжет на специалистов, а доведение до блеска - на форумчан.
Что касается компонентов, то по хорошему, конечно нужно делать тему для каждого, снабжать иконкой компонента(название не обязательно), помещать в подраздел наподобие, как это сейчас сделано в среде (это мечты). Ну, про пакеты я не говорю..
Итак, начнём - вот первый вариант настройки языка интерфейса (HiAsm 3.65 build 167).
Add(MainForm,6033040,28,133)
{
Left=10
Top=10
Position=1
link(onCreate,16325016:doRead,[])
}
Add(Button,5314238,560,322)
{
Left=185
Top=40
Caption=""
Point(doCaption)
}
Add(ComboBox,4136824,245,238)
{
Left=45
Top=55
Width=85
Height=21
Strings=#7:English|7:Русский|
Point(doSelectString)
link(onClick,6081217:doData,[])
}
Add(GetDataEx,11974193,252,294)
{
link(Data,4136824:String,[])
}
Add(Ini,16325016,98,168)
{
@Hint=#51:Читаем название языка при старте прграммы (doRead) |53:и сохраняем его после выбора пользователем (doWrite).|
Key="Language"
Type=1
link(onResult,479227:doEvent1,[])
link(FileName,3594133:Var1,[(104,121)])
link(Section,6121606:Var,[])
link(Value,11974193:Var1,[(125,156)(139,156)(139,303)])
}
Add(GlobalVar,3531629,126,91)
{
Name="Имя ini-файла"
Data=String(File.ini)
}
Add(GetDataEx,3594133,119,112)
{
link(Data,3531629:Var,[])
}
Add(Label,11244687,28,77)
{
Left=50
Top=35
Width=81
Height=17
Caption="Select language"
}
Add(GlobalVar,6121606,105,70)
{
Name="Имя секции в которой лежит ключ "Language", указывающий выбранный язык"
Data=String(main)
}
Add(GlobalVar,6248956,609,168)
{
Point(doName)
}
Add(Hub,479227,147,168)
{
@Hint=#0:|42:1 Устанавливаем название языка в ComboBox.|33:2 Читаем и устанавливаем надписи.|
link(onEvent1,4136824:doSelectString,[(187,174)(187,286)])
link(onEvent2,3062772:doWork2,[])
}
Add(Ini,13077120,493,161)
{
Key="Language"
Type=1
Point(onSectionData)
Point(doSectionData)
link(FileName,3594133:Var3,[(499,121)])
link(onSectionData,14706071:doSplit,[])
}
Add(DoData,6081217,294,245)
{
link(onEventData,15293568:doEvent1,[])
link(Data,11974193:Var3,[(300,233)(285,233)(285,303)])
}
Add(DoData,11806966,511,406)
{
link(onEventData,11142080:doCaption,[])
link(Data,11406904:Var,[])
}
Add(StrPart,14706071,549,168)
{
Char="="
Point(Left)
link(onSplit,6248956:doValue,[])
link(onPart,6248956:doName,[])
}
Add(Hub,15293568,357,245)
{
link(onEvent1,3062772:doWork3,[(399,251)])
link(onEvent2,16325016:doWrite,[(399,258)(399,331)(86,331)(86,181)])
}
Add(HubEx,3062772,395,168)
{
link(onEvent,11800951:doEvent1,[])
}
Add(Hub,11800951,420,175)
{
OutCount=3
link(onEvent1,13077120:doSectionData,[])
link(onEvent2,13646559:doData,[(475,188)(475,328)])
link(onEvent3,11806966:doData,[(463,195)(463,412)])
}
Add(GlobalVar,1252735,511,287)
{
Name="Button 1"
}
Add(DoData,13646559,511,322)
{
link(onEventData,5314238:doCaption,[])
link(Data,1252735:Var,[])
}
Add(Button,11142080,560,406)
{
Left=185
Top=70
Caption=""
Point(doCaption)
}
Add(GlobalVar,11406904,511,371)
{
Name="Button 2"
}
Add(InfoTip,10553730,497,238)
{
Info=#29:Установка актуальных надписей|
Frame=2
Width=106
Height=207
}
Add(InfoTip,12569277,483,126)
{
Info=#42:Занесение надписей в глобальные переменные|
Frame=2
Width=169
Height=81
}
Add(InfoTip,6521869,231,196)
{
Info=#26:Пользователь выбирает язык|
Frame=2
Width=106
Height=116
}
Add(InfoTip,6673533,77,28)
{
Info=#41:Чтение и запись названия выбранного языка|
Frame=2
Width=127
Height=186
}
Add(InfoTip,5861413,161,420)
{
Info=#6:[main]|16:Language=English|0:|9:[English]|11:Button 1=ON|12:Button 2=OFF|0:|9:[Русский]|12:Button 1=ВКЛ|13:Button 2=ОТКЛ|
Frame=2
HAlign=0
Width=106
Height=144
Margin=5
}
Add(InfoTip,2324912,112,343)
{
Info=#169:Для работы нужен файл с именем, лежащем в GlobalVar "Имя ini-файла". В нашем случае это "File.ini". Сделать его можно, например в блокноте. Содержание - примерно такое:|
Width=204
Height=235
Margin=2
}