diff --git a/InstallerSamples/!NewExecutors/Браузер1.pas b/InstallerSamples/!NewExecutors/Браузер1.pas index 585c26cfa..1fffc48d4 100644 --- a/InstallerSamples/!NewExecutors/Браузер1.pas +++ b/InstallerSamples/!NewExecutors/Браузер1.pas @@ -3,9 +3,11 @@ begin var КнопкаЯндекс := СоздатьКнопку('Яндекс'); var КнопкаВКШ := СоздатьКнопку('ВКШ'); +// var КнопкаВКШКарта := СоздатьКнопку('ВКШ Карта'); var Браузер := СоздатьБраузер; КнопкаЯндекс.ПриНажатии += Браузер.ОтобразитьСайт('http://www.yandex.ru'); КнопкаВКШ.ПриНажатии += Браузер.ОтобразитьСайт('http://sunschool.mmcs.sfedu.ru'); +// КнопкаВКШКарта.ПриНажатии += Браузер.ОтобразитьСайт('https://yandex.ru/maps/39/rostov-na-donu'); end. \ No newline at end of file diff --git a/InstallerSamples/!NewExecutors/Браузер2.pas b/InstallerSamples/!NewExecutors/Браузер2.pas new file mode 100644 index 000000000..f4da96279 --- /dev/null +++ b/InstallerSamples/!NewExecutors/Браузер2.pas @@ -0,0 +1,8 @@ +uses Исполнители,ГрафическиеИсполнители; + +begin + var Браузер := СоздатьБраузер; + + var страныА := Страны.Выбрать(НаБукву('Р')); + страныА.ДляВсех(страна->begin СоздатьКнопку(страна).ПриНажатии += Браузер.ОтобразитьСайт('https://ru.wikipedia.org/wiki/'+страна); end); +end. \ No newline at end of file diff --git a/InstallerSamples/!NewExecutors/Браузер3.pas b/InstallerSamples/!NewExecutors/Браузер3.pas new file mode 100644 index 000000000..642019515 --- /dev/null +++ b/InstallerSamples/!NewExecutors/Браузер3.pas @@ -0,0 +1,15 @@ +uses Исполнители,ГрафическиеИсполнители; + +begin + var Браузер := СоздатьБраузер; + + var СписокЭлементов := СоздатьСписок; + СписокЭлементов.Высота := 600; + + СписокЭлементов.ДобавитьМного(Страны); + // вариант: + //Страны.ДляВсех(страна->Список.Добавить(страна)); + + СписокЭлементов.ПриНажатии += procedure -> + Браузер.Отобразить('https://ru.wikipedia.org/wiki/'+СписокЭлементов.ТекущаяСтрока); +end. \ No newline at end of file diff --git a/InstallerSamples/!NewExecutors/Браузер4.pas b/InstallerSamples/!NewExecutors/Браузер4.pas new file mode 100644 index 000000000..56531a7fa --- /dev/null +++ b/InstallerSamples/!NewExecutors/Браузер4.pas @@ -0,0 +1,33 @@ +uses Исполнители,ГрафическиеИсполнители; + +begin + var Браузер := СоздатьБраузер; + + var СписокЭлементов: ListBox2; + var КоличествоСтран: TextLabel2; + + Range('А','Я').ДляВсех(буква -> + begin + var кнопка := СоздатьКнопку(буква); + кнопка.Width := 40; + кнопка.ПриНажатии += procedure -> + begin + var СтраныНаБукву := Страны.Выбрать(НаБукву(буква)); + СписокЭлементов.Очистить; + СписокЭлементов.ДобавитьМного(СтраныНаБукву); + КоличествоСтран.Текст := 'Cтран на букву '+буква+': '+СтраныНаБукву.Count; + end + end + ); + + СписокЭлементов := СоздатьСписок; + СписокЭлементов.Высота := 200; + СписокЭлементов.ДобавитьМного(Страны.Выбрать(НаБукву('А'))); + // вариант: + //Страны.ДляВсех(страна->Список.Добавить(страна)); + + СписокЭлементов.ПриНажатии += procedure -> + Браузер.Отобразить('https://ru.wikipedia.org/wiki/'+СписокЭлементов.ТекущаяСтрока); + + КоличествоСтран := СоздатьТекст('Cтран на букву А: 12'); +end. \ No newline at end of file diff --git a/InstallerSamples/!NewExecutors/Браузер5.pas b/InstallerSamples/!NewExecutors/Браузер5.pas new file mode 100644 index 000000000..52082b158 --- /dev/null +++ b/InstallerSamples/!NewExecutors/Браузер5.pas @@ -0,0 +1,31 @@ +uses Исполнители,ГрафическиеИсполнители; + +begin + var Браузер := СоздатьБраузер; + + var СписокЭлементов := СоздатьСписок; + СписокЭлементов.Высота := 200; + СписокЭлементов.ДобавитьМного(Страны.Выбрать(НаБукву('А'))); + // вариант: + //Страны.ДляВсех(страна->Список.Добавить(страна)); + + СписокЭлементов.ПриНажатии += procedure -> + Браузер.Отобразить('https://ru.wikipedia.org/wiki/'+СписокЭлементов.ТекущаяСтрока); + + var Кнопки := Range('А','Я').Select(буква -> СоздатьКнопку(буква)); + + var КоличествоСтран := СоздатьТекст('Cтран на букву А: 12'); + + НоваяСтрока; + + Кнопки.ДляВсех(кнопка -> begin + кнопка.Width := 40; + кнопка.ПриНажатии += procedure -> + begin + var СтраныНаБукву := Страны.Выбрать(НаБукву(кнопка.Text)); + СписокЭлементов.Очистить; + СписокЭлементов.ДобавитьМного(СтраныНаБукву); + КоличествоСтран.Текст := 'Cтран на букву '+кнопка.Текст+': '+СтраныНаБукву.Count + end + end); +end. \ No newline at end of file diff --git a/InstallerSamples/!NewExecutors/ГрафическиеИсполнители.pas b/InstallerSamples/!NewExecutors/ГрафическиеИсполнители.pas index a19f3f767..cad4c3367 100644 --- a/InstallerSamples/!NewExecutors/ГрафическиеИсполнители.pas +++ b/InstallerSamples/!NewExecutors/ГрафическиеИсполнители.pas @@ -9,6 +9,7 @@ type function ОтобразитьСайт(адрес: string): () -> () := () -> Self.Отобразить(адрес); end; + Button2 = class(Button) private procedure ppp(sender: Object; e: System.EventArgs); @@ -19,14 +20,52 @@ type inherited Create(text); b.Click += ppp; end; + property Текст: string read GetText write SetText; end; + ListBox2 = class(ListBox) + private + procedure ppp(sender: Object; e: System.EventArgs); + function GetHeight := lb.Height; + procedure SetHeight(h: integer) := lb.Height := h; + public + event ПриНажатии: procedure; + constructor Create; + begin + inherited Create; + lb.Click += ppp; + {lb.AutoSize := False; + lb.Width := 160;} + lb.Width := 190; + end; + procedure Добавить(name: string) := Items.Add(name); + procedure Очистить := Items.Clear; + procedure ДобавитьМного(m: sequence of string); + begin + foreach var x in m do + Items.Add(x); + end; + function ТекущаяСтрока := Items[Selectedindex] as string; + property Высота: integer read GetHeight write SetHeight; + end; + TextLabel2 = class(TextLabel) + public + property Текст: string read GetT write SetT; + + end; + + procedure Button2.ppp(sender: Object; e: System.EventArgs); begin if ПриНажатии<>nil then ПриНажатии end; +procedure ListBox2.ppp(sender: Object; e: System.EventArgs); +begin + if ПриНажатии<>nil then + ПриНажатии +end; procedure Init(); begin @@ -39,15 +78,28 @@ begin Result := new Button2(Заголовок); end; +function СоздатьСписок: ListBox2; +begin + ParentControl := MainPanel; + Result := new ListBox2; +end; + +function СоздатьТекст(txt: string := ''): TextLabel2; +begin + ParentControl := MainPanel; + Result := new TextLabel2(txt); +end; + function СоздатьБраузер: WebBrowser2; begin MainPanel.Dock := Dockstyle.Left; - MainPanel.Width := 130; + MainPanel.Width := 200; ParentControl := MainForm; Result := new WebBrowser2; Result.Dock := DockStyle.Fill; end; +procedure НоваяСтрока := LineBreak; begin Init(); diff --git a/InstallerSamples/!NewExecutors/Исполнители.pas b/InstallerSamples/!NewExecutors/Исполнители.pas index 0835e7a92..ddddf3d73 100644 --- a/InstallerSamples/!NewExecutors/Исполнители.pas +++ b/InstallerSamples/!NewExecutors/Исполнители.pas @@ -244,7 +244,37 @@ type end; end; - +const dbname = 'countries.db'; + +var coun: array of string := nil; + +function Ñòðàíû: sequence of string; +begin + if coun = nil then + coun := ReadLines(dbname).ToArray(); + Result := coun; +end; + +function Âûáðàòü(Self: sequence of T; cond: T -> boolean): sequence of T; extensionmethod; +begin + Result := Self.Where(cond); +end; + +procedure ÄëÿÂñåõ(Self: sequence of T; act: T -> ()); extensionmethod; +begin + Self.Foreach(act); +end; + +function ÍàÁóêâó(c: char): string -> boolean; +begin + Result := ñòðàíà -> ñòðàíà[1] = c; +end; + +function ÍàÁóêâó(s: string): string -> boolean; +begin + Result := ñòðàíà -> ñòðàíà[1] = s[1]; +end; + var ///- Ìíîæåñòâî - ýòî íàáîð çíà÷åíèé Ìíîæåñòâî: ÌíîæåñòâîÒèï := new ÌíîæåñòâîÊëàññ; diff --git a/InstallerSamples/!NewExecutors/Страны.pas b/InstallerSamples/!NewExecutors/Страны.pas new file mode 100644 index 000000000..4ac6ffb23 --- /dev/null +++ b/InstallerSamples/!NewExecutors/Страны.pas @@ -0,0 +1,7 @@ +uses Èñïîëíèòåëè; + +begin + var ñòðàíûÀ := Ñòðàíû.Âûáðàòü(ÍàÁóêâó('À')); + ñòðàíûA.Println; +end. + \ No newline at end of file