Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.97/985: Рейтинг темы: голосов - 985, средняя оценка - 4.97
BaboshinSD
341 / 280 / 49
Регистрация: 15.11.2012
Сообщений: 477
Записей в блоге: 1
1

Полезные коды для PascalABC.NET

23.03.2013, 15:03. Просмотров 204999. Ответов 125

В этой теме размещаются полезные исходники программ, различные процедуры и функции, а так же готовые решения на часто задаваемые вопросы, написанные на PascalABC.NET.

Поддержать тему и добавить свои примеры, исходники и пр. может каждый, после того, как ознакомиться с правилами темы:
Правила темы!
  1. Запрещается добавлять коды программ никак не связанные с PascalABC.NET, для этих программ есть другие темы и разделы.
  2. Не рекомендуется добавлять слишком простые примеры, типа "Как добавить текст на кнопку?" и пр.
  3. Перед тем как выложить код, подумайте будет ли он кому-то интересен или полезен.
  4. Приветствуются сложные примеры или проекты, а так же программы с интересным принципом работы.
  5. Если программа использует сторонние ресурсы (изображения, библиотеки и пр.) обязательно прикрепляйте их во вложении
  6. Обязательно подробно комментируйте свой код, чтобы другим было проще разобраться в нём.
  7. Тема ведётся в формате Вопрос-Ответ, поэтому все сообщения оформляются в таком виде:
    В: Как что-то сделать?
    О:
    Делаем что-то
    Pascal
    1
    
    // Тут код
  8. Если вы хотите отредактировать свой код, можно обратиться к модераторам раздела или к ТС.


Путеводитель по теме:


Работа с формами:

Готовые решения:
Готовые решения на часто задаваемые вопросы.

Работа с графикой:
Исходники программ, работающих с графикой и графическими библиотеками (GraphABC, OpenGL и пр.).
Проектирование игр:
Инструкции, советы и пр.:
Инструкции, касающиеся работы с PascalABC.NET, советы для новичков и пр.
Работа со строками:
Базовые алгоритмы:
25
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 15:03
Ответы с готовыми решениями:

Модуль для PascalABC.NET
Здравствуйте уважаемые форумчане, возник вопрос почему не работает модуль. Вот модуль unit...

Исправить код для PascalABC.net
как минимум, первое место которое ему не нравиться это как я обьявляю тип объект const size=10; ...

Процедура GetMem для PascalABC.NET
Долго долго курил страницы форума, изучал динамические списки. Когда код для программы уже...

Есть ли PascalABC.NET для Mac OS X?
Есть ли PascalABC.NET для Mac OS X?

В чем разница PascalABC.net и PascalABC
Скажите в чем разница PascalABC.net И PascalABC. Помню когда-то давно программы работающие в...

125
Emiliarge
Заблокирован
30.03.2014, 00:20 61
В: Как в PascalABC.NET сделать текст с тенью и под углом?
или Как в PascalABC.NET работать с WPF?

О:
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{$reference 'PresentationCore.dll'}
{$reference 'PresentationFramework.dll'}
 
uses System.Threading,
     System.Windows,
     System.Windows.Controls,
     System.Windows.Media,
     System.Windows.Media.Effects;
 
var
  Thread1: Thread;
  Application1: Application;
  
  MainWindow: Window;
  grid1: Grid;
  textBlock1: TextBlock;
  rotateTransform1: RotateTransform;
  dropShadowEffect1: DropShadowEffect;
  
procedure main();
begin
  Application1 := new Application();
  
  MainWindow := new Window();
  
  //
  // grid1
  //
  grid1 := new Grid;
  MainWindow.Content := grid1;
  //
  // textBlock
  //
  textBlock1 := new TextBlock;
  textBlock1.FontSize := 32;
  textBlock1.Width := 250;
  textBlock1.Height := 50;
  textBlock1.Text := 'Привет из WPF :)';
  
  rotateTransform1 := new RotateTransform();
  rotateTransform1.Angle := 2;
  textBlock1.RenderTransform := rotateTransform1;
  
  dropShadowEffect1 := new DropShadowEffect();
  dropShadowEffect1.Opacity := 0.3;
  textBlock1.Effect := dropShadowEffect1;
  
  grid1.Children.Add(textBlock1);
  
  MainWindow.Show;
  
  Application1.Run();
end;
 
begin
  Thread1 := new Thread(main);
  Thread1.SetApartmentState(ApartmentState.STA);
  Thread1.Start(); 
end.
1
Миниатюры
Полезные коды для PascalABC.NET  
Emiliarge
Заблокирован
30.03.2014, 19:35 62
В: Как украсить обычное приложение PascalABC.NET с помощью WPF?
или
В: Прочитал про текст с тенью. Как туда добавить простую кнопку??? Или мне ради этой тени всю прогу переписывать под какую то WPF? Что за бред?

О: Достаточно вынести код выполнения приложения в отдельный поток STA и с помощью ElementHost вставить элемент управления WPF в свою обычную форму PascalABC.NET (Winforms)
Тогда форма будет поддерживать создание и элементов WPF и стандартных элементов Winforms
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
{$reference 'System.Windows.Forms.dll'}
{$reference 'PresentationCore.dll'}
{$reference 'PresentationFramework.dll'}
{$reference 'WindowsFormsIntegration.dll'}
 
uses
  System,
  System.Threading,
  System.Windows.Controls,
  System.Windows.Forms,
  System.Windows.Forms.Integration,
  System.Windows.Media,
  System.Windows.Media.Effects;
 
 
var
  Thread1: Thread;
  Form1: Form;
  Button1: Button;
  ElementHost1: ElementHost;
  Grid1: Grid;
  TextBlock1: TextBlock;
  RotateTransform1: RotateTransform;
  DropShadowEffect1: DropShadowEffect;
  
procedure Button1Click(sender: object; e: EventArgs);
begin
  MessageBox.Show('Кнопка Button1 нажата')
end;
  
procedure main;
begin
  Form1 := new Form;
  
  //
  // Button1
  //
  Button1 := new Button;
  Button1.AutoSize := True;
  Button1.Left := 10;
  Button1.Top := 10;
  Button1.Text := 'Просто кнопка';
  Button1.Click += Button1Click;
  Form1.Controls.Add(Button1);
  
  { ------------------------------ WPF ------------------------------ }
  //
  // ElementHost1
  //
  ElementHost1 := new ElementHost;
  //
  // Grid1
  //
  grid1 := new Grid;
  ElementHost1.Child := Grid1;
  ElementHost1.Dock := DockStyle.Fill;
  //
  // TextBlock
  //
  TextBlock1 := new TextBlock;
  TextBlock1.FontSize := 32;
  TextBlock1.Width := 260;
  TextBlock1.Height := 50;
  TextBlock1.Text := 'Привет из WPF :)';
  
  rotateTransform1 := new RotateTransform();
  rotateTransform1.Angle := 2;
  textBlock1.RenderTransform := RotateTransform1;
  
  DropShadowEffect1 := new DropShadowEffect();
  DropShadowEffect1.Opacity := 0.3;
  TextBlock1.Effect := DropShadowEffect1;
  
  Grid1.Children.Add(TextBlock1);
  
  Form1.Controls.Add(ElementHost1);
  { ----------------------------------------------------------------- }
  
  Application.Run(Form1);
end;
 
begin
  Thread1 := new Thread(main);
  Thread1.SetApartmentState(ApartmentState.STA);
  Thread1.Start(); 
end.
1
Изображения
 
Блондинка с ОЗМ
Заблокирован
30.03.2014, 19:52 63
Интересно! Но если это возможно в PascalABC.NET, то должно быть можно и на других языках под .NET? В версиях, где есть WPF? Вот бы посмоттеть где-нибудь!
И что такое поток STA и ElementHost?
0
Emiliarge
Заблокирован
30.03.2014, 20:33 64
Блондинка с ОЗМ,
то должно быть можно и на других языках под .NET?
Так и есть
В версиях, где есть WPF?
И даже где его нет штатно, например на C++/CLI. Если конечно именно на таком уровне как здесь-без визуального конструктора и без XAML
Вот бы посмоттеть где-нибудь!
Выслал в ЛС пример на шарпе
Там все проще. Создаем пользовательский элемент управления WPF через Проект - Добавить элемент, кидаем с панели элементов ElementHost. Строим проект чтобы пользовательский элемент скомпилировался. Выделяем ElementHost нажимаем кнопку Задачи - маленькая стрелка справа вверху. Выбираем пользовательский элемент. Все работает
И что такое поток STA и ElementHost?
STA указывает что функция должна выполняться в основном потоке приложения, и все потоки, которые в ней создаются, например при создании элементов, должны объединяться с основным потоком
Иначе может нарушиться взаимодействие элементов управления друг с другом
Это можно посмотреть создав поток на шарпе и попытавшись обратиться из него к форме или контролам на форме

Если в шарпе открыть файл Application.cs в обозревателе решений, где функция Main, , то там будет директива [STAThread] - она выполняет функцию Main основном потоке

Но в PascalABC.NET она почему-то не срабатывает-приходится создавать поток, объединяемый с основным потоком с помощью SetApartmentState(ApartamentState.STA), и в нем работать с WPF
Почему это тогда не нужно для Winforms-загадка. Наверно препроцессор сам добавляет STAThread, но очень криво

ElementHost-элемент Winforms, который кидают на форму Winforms и размещают в нём элементы WPF
Один ElementHost размещает один элемент управления WPF, но в WPF есть контейнеры, вроде как здесь Grid, в которых можно разместить множество элементов и расположить их произвольным образом
Собственно проблема такой совместимости в том что окна WPF рисуются с помощью directx, а Winforms - с помощью gdi+, которые работают непосредственно с железом и реализованы по разному, поэтому несовместимы друг с другом
Как это реализовано в ElementHost, без понятия. Может инжект в память... Может ElementHost - просто отдельное окно, рисуемое DirectX, а чтобы оно перетаскивалось и растягивалось вместе с основным. используется перехват событий..
Но что работает - это факт xD

И есть еще WindowsFormsHost-его кидают на окно WPF для размещения элементов Winforms
По моему опыту особенно остро в WPF не хватает DataGridView
1
30.03.2014, 20:33
Puporev
30.03.2014, 21:56
  #65
 Комментарий модератора 
Цитата Сообщение от BaboshinSD Посмотреть сообщение
В этой теме размещаются полезные исходники программ, различные процедуры и функции, а так же готовые решения на часто задаваемые вопросы, написанные на PascalABC.NET.
Все что к этому не относится, будет удалено.
0
Kordn
156 / 135 / 106
Регистрация: 18.05.2013
Сообщений: 289
02.04.2014, 19:42 66
Хочу поделиться своим скромным "фильтром" для фотографий
Код маленький, любительский, но зато своими руками, как говорится (и алгоритмы обработки цветов в том числе).
Просто замените значение константы file_name на путь к фотографии и наслаждайтесь(?)
P. S. Не советую обрабатывать большие фотографии. Оптимальный размер ~ 400x300 пикселей.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
uses
  GraphABC;
 
const
  file_name = 'model[3].jpg';
 
var
  pict: Picture;
 
///Негатив
function Negative(_sourcePict: Picture): Picture;
begin
  Result := new Picture(_sourcePict.Width, _sourcePict.Height);
  for var i := 0 to _sourcePict.Width - 1 do
    for var j := 0 to _sourcePict.Height - 1 do
    begin
      var col := _sourcePict.GetPixel(i, j);
      col := Color.FromArgb(255 - col.R, 255 - col.G, 255 - col.B);
      Result.SetPixel(i, j, col);
    end;
end;
 
///Резкость цвета
function Harshness(_sourcePict: Picture): Picture;
begin
  Result := new Picture(_sourcePict.Width, _sourcePict.Height); 
  for var i := 0 to _sourcePict.Width - 1 do
    for var j := 0 to _sourcePict.Height - 1 do
    begin
      var col := _sourcePict.GetPixel(i, j);
      col := Color.FromArgb(255 * (col.R div 128), 255 * (col.G div 128), 255 * (col.B div 128));
      Result.SetPixel(i, j, col);
    end;
end;
 
///Ч-Б
function BlackWhite(_sourcePict: Picture): Picture;
begin
  Result := new Picture(_sourcePict.Width, _sourcePict.Height);
  for var i := 0 to _sourcePict.Width - 1 do
    for var j := 0 to _sourcePict.Height - 1 do
    begin
      var col := _sourcePict.GetPixel(i, j);
      var temp := Round((col.R + col.G + col.B) / 3);
      col := Color.FromArgb(temp, temp, temp);
      Result.SetPixel(i, j, col);
    end;
end;
 
 
begin
  //Имя окна
  Window.Caption := 'Фото-фильтр';
  //Открываем оригинал фотографии
  pict := new Picture(file_name);
  //Устанавливаем удобные размеры и расположение окна
  Window.SetSize(pict.Width * 2 + 30, pict.Height * 2 + 30);
  Window.CenterOnScreen;
  //Рисуем оригинал
  pict.Draw(10, 10);
  //Рисуем негатив
  Negative(pict).Draw(pict.Width + 20, 10);
  //Рисуем "резкий" (контрастный) вариант
  Harshness(pict).Draw(10, pict.Height + 20);
  //Рисуем черно-белый вариант
  BlackWhite(pict).Draw(pict.Width + 20, pict.Height + 20);  
end.
1
pavelDev
50 / 50 / 26
Регистрация: 13.11.2013
Сообщений: 203
Записей в блоге: 1
24.04.2014, 15:44 67
вращающейся куб в OpenGl весь код написан мною
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
{$reference System.Windows.Forms.dll}
{$reference System.Drawing.dll}
{$apptype windows}
//openGl берём тут [url]http://pascalabc.net/downloads/opengl/OpenGL.pas[/url]
uses
  System, System.Drawing, System.Windows.Forms, OpenGL;
 
var
  the: System.Threading.Thread;
 
const
  wh = 0.48;//width and height
  speed = 20;//чем меньше число тем больше скорость 
 
procedure drawCube;
begin
  glEnable(GL_DEPTH_TEST);
  glEnable(GL_NORMALIZE);
  glEnable(GL_CULL_FACE);
  glCullFace(GL_BACK);  
  glLoadIdentity(); 
  
  glRotatef(Environment.TickCount / speed, single(1.0), single(1.0), single(0.0));
  glBegin(GL_qUADS);
  glColor3f(single(0.0), single(1.0), single(0.0));            
  glVertex3f(single( wh), single(wh), single(-wh));          
  glVertex3f(single(-wh), single(wh), single(-wh));        
  glVertex3f(single(-wh), single(wh), single(wh));          
  glVertex3f( single(wh), single(wh), single(wh));
  
  glColor3f(single(1.0), Single(0.5), single(0.0));            
  glVertex3f( single(wh), single(-wh), single(wh));         
  glVertex3f(single(-wh), single(-wh), Single(wh));          
  glVertex3f(single(-wh), single(-wh), single(-wh));          
  glVertex3f(single( wh), single(-wh), single(-wh)); 
  
  glColor3f(single(1.0), single(0.0), single(0.0));              
  glVertex3f(single( wh), single(wh), single(wh));         
  glVertex3f(single(-wh), single(wh), single(wh));         
  glVertex3f(single(-wh), single(-wh), single( wh));        
  glVertex3f( single(wh), single(-wh), single( wh));   
  
  glColor3f(single(1.0), single(1.0), single(0.0));         
  glVertex3f(single( wh), single(-wh), single(-wh));        
  glVertex3f(single(-wh), single(-wh), single(-wh));         
  glVertex3f(single(-wh), single(wh), single(-wh));          
  glVertex3f(single(wh), single(wh), single(-wh)); 
  
  glColor3f(single(0.0), single(0.0), single(1.0));            
  glVertex3f(single(-wh), single(wh), single(wh));         
  glVertex3f(single(-wh), single(wh), single(-wh));          
  glVertex3f(single(-wh), single(-wh), single(-wh));        
  glVertex3f(single(-wh), single(-wh), single(wh));
  
  glColor3f(single(wh), single(wh), single(wh));             
  glVertex3f(single(wh), single(wh), single(-wh));         
  glVertex3f( single(wh), single(wh), single(wh));          
  glVertex3f( single(wh), single(-wh), single(wh));          
  glVertex3f(single(wh), single(-wh), single(-wh));   
  
  glEnd();
  glFlush();
end;
 
procedure setDrawMode(mode: string);
begin
  mode.ToLower;
  if mode = 'edge' then opengl.glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
  if mode = 'vertex' then opengl.glPolygonMode(GL_FRONT_AND_BACK, opengl.GL_POINT);
  if mode = 'polygons' then opengl.glPolygonMode(GL_FRONT_AND_BACK, opengl.GL_FILL);
end;
 
type
  Form1 = class(Form)
    _hdc: HDC;
    constructor Create;
    begin
      self.Size := new System.Drawing.Size(400, 400);
      _hdc := GetDC(self.Handle.ToInt32());
      OpenGLInit(self.Handle);
    end;
    
    protected procedure OnPaint(e: System.Windows.Forms.PaintEventArgs); override;
    begin
      glClearColor(single(0.0), single(0.0), single(0.0), single(0.0));
      glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
      glViewport(1, 1, self.Width, self.Height);
      
      setDrawMode('polygons');//ели надо рёбра то пишем edge
      drawCube;
      SwapBuffers(_hdc);
    end;
    
    procedure Form_Closed(sender: object; e: EventArgs);
    begin
      the.Abort;//обязательно остонавливаем поток 
      OpenGLUninit(self.Handle);
    end;
  
  end;
 
var
  f: Form1;
 
procedure pr;
begin
  repeat
    Sleep(40); //избавляемя от мерцания (ну да способ наверное кривоватый но работает)   
    f.Invalidate();//ну и вызываем перерисовку формы ну тоесть как бы событие onPaint 
  until false;
end;
 
begin
  f := new Form1();
  f.MaximizeBox := false;
  f.FormBorderStyle := FormBorderStyle.Fixed3D;
  f.Text:='CubeInOpengl';
  f.Closed += f.Form_Closed;  
  the := new System.Threading.Thread(pr);//создаём отдельный поток для вращения 
  the.Start;//и конечно запускаем 
  Application.Run(f);
end.
1
pavelDev
50 / 50 / 26
Регистрация: 13.11.2013
Сообщений: 203
Записей в блоге: 1
11.05.2014, 13:35 68
знакомство с combobox'ом
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
uses system.windows.forms;
var f:form;
C:ComboBox;
b:Button;
procedure ch(Send:object;E:system.EventArgs);
begin
F.Text:=C.SelectedItem.ToString;//меняем заголовок
end;
procedure bcl(Send:object;E:system.EventArgs);
begin
MessageBox.Show('было выбрана вещь '+C.SelectedItem.ToString+' с индексом '+C.SelectedIndex.ToString);
end;
begin
C:=new ComboBox;//выдиляем память под combobox
//добовляем вещи
C.Items.Add('item a');
C.Items.Add('item b');
C.Items.Add('item c');
 
C.SelectedIndex:=0;//изначально выбираем вещь 0(так как отсчёт идёт с нуля)
C.DropDownStyle:=system.windows.forms.ComboBoxStyle.DropDownList;//запрещаем редактирование текста в combobox
C.DropDownClosed+=ch;//привязываем событие
 
//описаваем кнопку (думаю тут всё понятно)
B:=new Button;
B.Left:=120;
b.Text:='click me';
b.Click+=bcl;
 
f:=new Form();
F.Controls.Add(C);//добовляем combobox 
F.Controls.Add(B);//добовляем button
//для красоты 
f.Width:=205;
f.Height:=55;
f.FormBorderStyle:=system.windows.forms.formborderstyle.fixed3d;//указываем на то что форма имеет фиксированный размер
F.MaximizeBox:=false;
 
f.Text:=C.SelectedItem.ToString;//изначально заголовок окна равен тексту выбранный вещи 
F.ShowDialog;
end.
0
pavelDev
50 / 50 / 26
Регистрация: 13.11.2013
Сообщений: 203
Записей в блоге: 1
17.05.2014, 13:38 69
знакомство с trackbar'ом
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
{$reference System.Windows.Forms.dll}
{$reference System.Drawing.dll}
{$apptype windows}
uses
  system.windows.forms,System.Drawing;
 
var
  f: form;
  tr: trackbar;
  but, but1,but2: button;
num1,num2:numericUpDown;
 
procedure bcl(sender: object; E: system.EventArgs);
begin
  if tr.Orientation = system.windows.forms.Orientation.Horizontal then
  begin
    tr.Orientation := system.windows.forms.Orientation.Vertical;
      but.Text := tr.Orientation.ToString;
    exit//обязательно выходим из процедуры что бы не пошла следунщая проверка условия дальше 
  end;
  if tr.Orientation = system.windows.forms.Orientation.Vertical then
  begin
    tr.Orientation := system.windows.forms.Orientation.Horizontal;
      but.Text := tr.Orientation.ToString;
    exit
  end;
end;
 
procedure bcl1(sender: object; E: system.EventArgs);
begin
  
  if tr.TickStyle = system.windows.forms.tickstyle.Both then
  begin
    tr.TickStyle := system.windows.forms.tickstyle.BottomRight;  but1.Text := tr.TickStyle.ToString;
    exit
  end;
  
  if tr.TickStyle = system.windows.forms.tickstyle.BottomRight then
  begin
    tr.TickStyle := system.windows.forms.tickstyle.None;  but1.Text := tr.TickStyle.ToString;
    exit
  end;
  if tr.TickStyle = system.windows.forms.tickstyle.None then
  begin
    tr.TickStyle := system.windows.forms.tickstyle.TopLeft;  but1.Text := tr.TickStyle.ToString;
    exit
  end;
  if tr.TickStyle = system.windows.forms.tickstyle.TopLeft then
  begin
    tr.TickStyle := system.windows.forms.tickstyle.Both;  but1.Text := tr.TickStyle.ToString;
    exit
  end;
end;
 
procedure widthPlus(sender:object;E:system.EventArgs);
begin
if tr.Orientation=system.windows.forms.orientation.Horizontal then
tr.Width:=system.Convert.ToInt16(num1.Value);
if tr.Orientation=system.windows.forms.orientation.Vertical then
tr.Height:=system.Convert.ToInt16(num1.Value);
end;
 
procedure valueNow(sender:object;E:system.EventArgs);
begin
tr.Maximum:=system.Convert.ToInt16(num2.Value);
f.Text:=tr.Value.ToString;
end;
 
procedure tvc(sender:object;E:system.EventArgs);
begin
f.Text:=tr.Value.ToString;
end;
 
procedure b2cl(sender:object;E:system.EventArgs);
begin
messageBox.Show('текущее значение '+tr.Value.ToString,'NV');
end;
 
begin
  f := new System.Windows.Forms.Form;
  f.StartPosition := System.Windows.Forms.FormStartPosition.CenterScreen;
  
  tr := new System.Windows.Forms.TrackBar;
  tr.Location := new System.Drawing.Point(0, 30);
  tr.ValueChanged+=tvc;
  f.Text:=tr.Value.ToString;
  
  but := new System.Windows.Forms.Button();
  but.Text := tr.Orientation.ToString;
  but.Click += bcl;
  
  but1 := new System.Windows.Forms.Button();
  but1.Location := new System.Drawing.Point(75, 0);
  but1.Text := tr.TickStyle.ToString;
  but1.Click += bcl1;
  
  but2:=new System.Windows.Forms.Button();
  but2.Location:=new System.Drawing.Point(250);
  but2.Width:=34;
  but2.Text:='NV';
  but2.Click+=b2cl;
  
  num1:=new System.Windows.Forms.NumericUpDown;
  num1.Location:=new System.Drawing.Point(150);
 
  num1.Width:=50;
  num1.Minimum:=50;
  num1.ValueChanged+=widthPlus;
  num1.Maximum:=500;
  if tr.Orientation=system.windows.forms.orientation.Horizontal then
   num1.Value:=tr.Width;
   if tr.Orientation=system.windows.forms.orientation.Vertical then
      num1.Value:=tr.Height;
  
    num2:=new System.Windows.Forms.NumericUpDown;
  num2.Location:=new System.Drawing.Point(200);
  num2.Width:=50;
  num2.Minimum:=1;
num2.Value:=tr.Maximum;
num2.ValueChanged+=valueNow;
  
  f.Controls.Add(but);
  f.Controls.Add(but1);
  f.Controls.Add(but2);
  f.Controls.Add(num1);
  f.Controls.Add(num2);
  f.Controls.Add(tr);
  f.ShowDialog;
end.
1
pavelDev
50 / 50 / 26
Регистрация: 13.11.2013
Сообщений: 203
Записей в блоге: 1
19.05.2014, 00:51 70
вот так можно ПОЛУЧИТЬ ЛОКАЛЬНЫЙ IP
Pascal
1
2
3
begin
writeln(System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName).AddressList[0].ToString);
end.
0
pavelDev
50 / 50 / 26
Регистрация: 13.11.2013
Сообщений: 203
Записей в блоге: 1
21.05.2014, 02:33 71
знакомство с progressBar'ом
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
{$reference System.Windows.Forms.dll}
{$reference System.Drawing.dll}
{$apptype windows}
uses
  system.windows.forms, System.Drawing;
 
var
  f: form;
  tr: trackbar;
  pr: progressbar;
  nm, nm2: numericupdown;
  but, but2, but3: button;
  back: system.ComponentModel.BackgroundWorker;
 
procedure sc(sender: object; e: system.EventArgs);
begin
  pr.Width := f.ClientSize.Width;
end;
 
procedure mc(sender: object; e: system.Windows.Forms.MouseEventArgs);
begin
  if (e.Button = system.Windows.Forms.MouseButtons.Left) and (pr.Value < pr.Maximum) then 
    pr.Value += 1;
  if (e.Button = system.Windows.Forms.MouseButtons.Right) and (pr.Value > pr.Minimum)  then 
    pr.Value -= 1;
end;
 
procedure vc(sender: object; e: system.EventArgs);
begin
  pr.Value := pr.Minimum;
  pr.Maximum := system.Convert.ToInt32(nm.Value);
end;
 
procedure nm2vc(sender: object; e: system.EventArgs);
begin
  pr.Height := system.Convert.ToInt32(nm2.Value);
end;
 
procedure bc(sender: object; e: system.EventArgs);
begin
  pr.Value := pr.Minimum;
  if pr.Style = system.Windows.Forms.ProgressBarStyle.Blocks then
  begin
    pr.Style := system.Windows.Forms.ProgressBarStyle.Continuous;
    but.Text := pr.Style.ToString;
    exit;
  end;
  if pr.Style = system.Windows.Forms.ProgressBarStyle.Continuous then
  begin
    pr.Style := system.Windows.Forms.ProgressBarStyle.Marquee;
    but.Text := pr.Style.ToString;
    exit;
  end;
  if pr.Style = system.Windows.Forms.ProgressBarStyle.Marquee then
  begin
    pr.Style := system.Windows.Forms.ProgressBarStyle.Blocks;
    but.Text := pr.Style.ToString;
    exit;
  end;
end;
 
procedure workForBack(sender: object; e: system.ComponentModel.DoWorkEventArgs);
var
  a, b, c, he: array of integer;
  i, j: integer;
const
  sizeOfarr = 1000000;
begin
  setlength(a, sizeofarr);
  setlength(b, a.Length);
  setlength(c, b.Length);
  
  pr.Maximum := sizeofarr;
  pr.Value := 0;
  nm.Enabled := false;
  nm2.Enabled := false;
  but.Enabled := false;
  but2.Enabled := false;
  
  for i := 0 to sizeOfarr - 1 do
    a[i] := random(1, 1000);
  for i := 0 to sizeOfarr - 1 do
    b[i] := random(1, 1000);
  for i := 0 to sizeOfarr - 1 do
  begin
    c[i] := a[i] * b[i];
    pr.Value += 1;
  end;
  messagebox.Show('перемножение двух одномерных массивов завершенно', pr.Value.ToString);
  pr.Maximum := system.Convert.ToInt32(nm.Value);
  pr.Value := pr.Minimum;
  nm.Enabled := true;
  nm2.Enabled := true;
  but.Enabled := true;
  but2.Enabled := true;
end;
 
procedure b2c(sender: object; e: system.EventArgs);
begin
  back.RunWorkerAsync;
end;
 
procedure b3cl(sender: object; e: system.EventArgs);
begin
  messagebox.Show('текущее значение ' + pr.Value.ToString + ' максимум ' + pr.Maximum.ToString, ':-)');//можно было в проценты но мне лень
end;
 
begin
  f := new Form;
  f.MouseDown += mc;
  
  nm := new NumericUpDown;
  nm.Minimum := 2;
  nm.Maximum := 160;
  nm.Width := 50;
  nm.Value := nm.Maximum;
  nm.ValueChanged += vc;
  
  nm2 := new NumericUpDown;
  nm2.Minimum := 10;
  nm2.Maximum := 100;
  nm2.Width := 50;
  nm2.Value := 20;
  nm2.Top := 20;
  nm2.ValueChanged += nm2vc;
  
  pr := new ProgressBar;
  pr.Top := 40;
  pr.Width := f.ClientSize.Width;
  pr.Height := system.Convert.ToInt32(nm2.Value);
  pr.Minimum := 0;
  //максимум  прогресс бара(не путать с длинной)
  pr.Maximum := system.Convert.ToInt32(nm.Value);
  
  but := new Button;
  but.Left := 50;
  but.Text := pr.Style.ToString;
  but.Click += bc;
  
  but2 := new Button;
  but2.Text := 'Real Progress';
  but2.Left := 125;
  but2.Click += b2c;
  
  but3 := new Button;
  but3.Text := 'now value';
  but3.Left := 200;
  but3.Click += b3cl;
  
  back := new System.ComponentModel.BackgroundWorker;//да да создаём отдельный поток 
  back.DoWork += workforback;
  
  f.Controls.Add(pr);
  f.Controls.Add(nm2);
  f.SizeChanged += sc;
  f.Controls.Add(nm);
  f.Controls.Add(but);
  f.Controls.Add(but2);
  f.Controls.Add(but3);
  application.EnableVisualStyles;
  application.Run(f);
end.
0
pavelDev
50 / 50 / 26
Регистрация: 13.11.2013
Сообщений: 203
Записей в блоге: 1
29.05.2014, 02:08 72
знакомство с потоками
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//мы будем сравнитьвать backrounderworker и простой thread
{$reference System.Windows.Forms.dll}
{$reference System.Drawing.dll}
{$apptype windows}
uses
  system.windows.forms, System.Drawing,system.Threading,System.Diagnostics;
  var f:form;
  b1,b2:Button;
  bw,bw1:system.componentmodel.BackgroundWorker;
  thd:Thread;
  count:PerformanceCounter;
  ///процедура что бы занять поток хоть какойто работай 
  procedure permnMatrix();
  var ar1,ar2,r:array[1..8000,1..8000] of integer;
i,j:integer;
  begin
  for i:=1 to 8000 do
begin
for j:=1 to 8000 do
begin
ar1[i,j]:=Random(100000);
ar2[i,j]:=Random(100000);
R[i,j]:=ar1[i,j]*ar2[i,j];
end;
end;
  end;
  procedure zagrproc(sender:object;E:system.componentmodel.doworkeventargs);
  begin
  count:=new PerformanceCounter('Процессор', '% загруженности процессора', '_Total');//получаем нагрузку на цп 
  repeat
  f.Text:='нагрузка на цп '+Round(system.Convert.ToInt32(count.NextValue)).ToString;
 Sleep(600);
 until false;
  end;
  procedure pern(sender:object;E:system.componentmodel.doworkeventargs);
  begin   
  b2.Enabled:=false;
  b1.Enabled:=false;
   MillisecondsDelta;
  permnMatrix;
   Messagebox.Show('прошло '+(MillisecondsDelta/1000).ToString+' секунд');
    b2.Enabled:=true;
  b1.Enabled:=true;
  end;
  procedure thdBack();
  begin
  b2.Enabled:=false;
  b1.Enabled:=false;
  MillisecondsDelta;
 permnMatrix;
 Messagebox.Show('прошло '+(MillisecondsDelta/1000).ToString+' секунд');
      b2.Enabled:=true;
  b1.Enabled:=true;
  end;
 procedure b1cl(sender:object;E:system.EventArgs);
 begin
 bw.RunWorkerAsync;
 end;
 procedure b2cl(sender:object;E:system.EventArgs);
 begin
 thd.Start;//да к сожелению тут генирирутся ошибка при повторном запуске 
 end;
 begin
 f:=new Form();
 F.Size:=new System.Drawing.Size(244,89);
 F.MaximizeBox:=false;
 f.MinimizeBox:=false;
 f.FormBorderStyle:=system.windows.forms.FormBorderStyle.Fixed3D;
 f.Text:='загрузка...';
 
 b1:=new Button;
 b1.Size:=new System.Drawing.Size(115,50);
 b1.Text:='BackrounderWorker';
 b1.Click+=b1cl;
 
  b2:=new Button;
 b2.Size:=new System.Drawing.Size(115,50);
 b2.Text:='Simple Thread';
 b2.Location:=new system.drawing.Point(119);
 b2.Click+=b2cl;
 bw1:=new System.ComponentModel.BackgroundWorker();
 bw1.DoWork+=zagrproc;
 bw1.RunWorkerAsync;
 
 bw:=new System.ComponentModel.BackgroundWorker;
 bw.DoWork+=pern;
 
 
 thd:=new Thread(thdback);
 F.Controls.Add(b1);
 F.Controls.Add(b2);
 F.ShowDialog;
  end.
0
pavelDev
50 / 50 / 26
Регистрация: 13.11.2013
Сообщений: 203
Записей в блоге: 1
02.06.2014, 22:08 73
поменять текущую раскладку
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{$reference 'System.windows.forms.dll'}
{$reference 'System.Drawing.dll'}
{$apptype windows}
uses System.windows.forms,System.drawing;
var f:form;
b,b1:button;
procedure bcl(sender:object;E:System.EventArgs);
begin
InputLanguage.CurrentInputLanguage := InputLanguage.FromCulture(new System.Globalization.CultureInfo('en-US'));
b1.Enabled:=true;
b.Enabled:=false;
end;
 
procedure b1cl(sender:object;E:System.EventArgs);
begin
InputLanguage.CurrentInputLanguage := InputLanguage.FromCulture(new System.Globalization.CultureInfo('ru-RU'));
b.Enabled:=true;
b1.Enabled:=false;
 
end;
begin
f:=new System.Windows.Forms.Form;
f.Size:=new System.Drawing.Size(200,100);
f.MinimizeBox:=false;
f.MaximizeBox:=false;
f.FormBorderStyle:=System.Windows.Forms.formBorderStyle.Fixed3D;
 
b:=new System.Windows.Forms.Button;
b.Size:=new System.Drawing.Size(90,67);
b.Text:='EN';
b.Click+=bcl;
b.Enabled:=false;
 
b1:=new System.Windows.Forms.Button;
b1.Size:=new System.Drawing.Size(90,67);
b1.Location:=new System.Drawing.Point(100,0);
b1.Text:='RU';
b1.Click+=b1cl;
b1.Enabled:=false;
 
if InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new System.Globalization.CultureInfo('en-US')) then;
b.Enabled:=true;
 
if InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new System.Globalization.CultureInfo('ru-RU')) then
b1.Enabled:=true;
 
f.Controls.Add(b1);
f.Controls.Add(b);
f.ShowDialog;
end.
0
Водяной Змей
Заблокирован
10.06.2014, 03:17 74
Вход в ВКонтакте

Вводим логин, пароль (кнопка c изображением глаза показывает буквы пароля), нажимаем Вход - в WebBrowser загружается наша страница ВКонтакте, мы авторизованы.

Вместо WebBrowser целесообразно использовать Awesomium (см здесь, только на VB.NET).
Он не завешивает форму на момент загрузки страницы и вообще быстрее (по сути, это хром).

Код кнопки Вход и как я до него додумался.

Delphi
1
webBrowser1.Navigate('https://login.vk.com/?act=login&email=' + textBoxLogin.Text + '&pass=' + maskedTextBoxPassword.Text);
Как додумался.
http://yadi.sk/d/J_h3woUFSnRCK
2
Миниатюры
Полезные коды для PascalABC.NET  
Вложения
Тип файла: zip VK_Login.zip (32.9 Кб, 42 просмотров)
pavelDev
50 / 50 / 26
Регистрация: 13.11.2013
Сообщений: 203
Записей в блоге: 1
13.07.2014, 16:44 75
две главных формы
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{$apptype windows}
{$reference 'System.Windows.Forms.dll'}
{$reference 'System.Drawing.dll'}
uses
  System.Windows.forms, System.Drawing;
 
var
  mf1, mf2: form;
  bf1, bf2: button;
 
procedure bf1cl(sender: object; E: System.EventArgs);
begin
  MessageBox.Show('Кнопка 1 нажата', 'Form1');
end;
 
procedure bf2cl(sender: object; E: System.EventArgs);
begin
  MessageBox.Show('Кнопка 2 нажата', 'Form2');
end;
 
procedure mf1c(sender: object; E: System.EventArgs);
begin
  mf1 := nil;
  if mf2 = nil then   System.Environment.Exit(0); 
end;
 
procedure mf2c(sender: object; E: System.EventArgs);
begin;
  mf2 := nil;
  if mf1 = nil then   System.Environment.Exit(0);
end;
 
begin
  mf1 := new Form();mf1.Size := new System.Drawing.Size(170, 60);
  mf2 := new Form();mf2.Size := new System.Drawing.Size(170, 60);
  mf1.Closed += mf1c;
  mf2.Closed += mf2c;
  
  bf1 := new Button();
  bf1.Width := 150;
  bf1.Text := 'Кнопка первый формы'; 
  bf1.Click += bf1cl;
  mf1.Controls.Add(bf1);
  
  
  bf2 := new Button();
  bf2.Width := 150;
  bf2.Text := 'Кнопка второй формы'; 
  bf2.Click += bf2cl;
  mf2.Controls.Add(bf2);
  
  mf1.Show;
  mf2.Show; 
  Application.Run();
end.
0
Emiliarge
13.07.2014, 21:51
  #76

Не по теме:

pavelDev, они не главные. Главная форма бывает всего лишь 1. А при пустом Application.Run() главной формы нет. Впрочем, в данном коде ето не важно

Что такое bf2cl? Хлорид дифторида бора? Вам бы шнобелевскую премию за открытие -- хлорид фторида xD
Или все-таки ето bf1Click?

bf1 тоже не ясно, почему f?
Лучше следуйте венгерскому соглашению-frmMain, btn1
http://www.cuyamaca.net/crion/cis180Common/NamingConventions.pdf

0
pavelDev
50 / 50 / 26
Регистрация: 13.11.2013
Сообщений: 203
Записей в блоге: 1
14.07.2014, 00:36 77
Emiliarge,спасибо за замечание.Следующий раз буду писать дешифровку имён. Всё просто bf2cl-ButtonForm2Click(перевод:клик по кнопки из формы 2).bf1-ButtonForm1(кнопка формы 1) mf1-MainForm1(главная форма 1)
0
Emiliarge
14.07.2014, 01:13
  #78

Не по теме:

pavelDev,

ButtonForm2Click
А вот ето-идея! Только Form2_Button1_Click, а не ButtonForm2Click.
Такой подход вносит конкретику в код, в котором много разных форм

0
Соколиный глаз
30.07.2014, 09:03
  #79
 Комментарий модератора 
Данное сообщение не имеет никакого отношения к особенностям программирования в Паскаль АВС.het, а потому удалено. Если еще будете флудить где попало, забаним.
0
pavelDev
50 / 50 / 26
Регистрация: 13.11.2013
Сообщений: 203
Записей в блоге: 1
01.08.2014, 13:48 80
Относительный интерфейс
У многих новичков при написание оконных приложений возникает вопрос "Как сделать так что бы при изменение размера формы перестраивался бы весь интерфейс под новый размер ? " выход из такой ситуации достаточно прост привязать событие формы SizeChanged и дальше в этом событие высчитывать размеры элементов управления.Вот готовый пример
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
{$apptype windows}
{$reference 'System.Windows.Forms.dll'}
{$reference 'System.Drawing.dll'}  
 
uses
  System.Windows.Forms;
 
var
  f: form;
  lBox: listbox;
  butOpen, ButStart, ButWP: Button;
  renPanel: Panel;
 
procedure fsc(sender: object; E: System.EventArgs);
begin
  renPanel.Size := new System.Drawing.Size(f.ClientSize.Width, f.ClientSize.Height div 2);
  lBox.Location := new System.Drawing.Point(renPanel.Location.x, renPanel.Location.Y + renPanel.Height);
  lBox.Size := new System.Drawing.Size(renPanel.Width, f.ClientSize.Height - renPanel.Height - (f.ClientSize.Height div 15));
  
  butOpen.Size := new System.Drawing.Size(f.ClientSize.Width div 4, f.ClientSize.Height - (renPanel.ClientSize.Height + lBox.ClientSize.Height) );
  butOpen.Location := new System.Drawing.Point(0, f.ClientSize.Height - (f.ClientSize.Height - (renPanel.ClientSize.Height + lBox.ClientSize.Height)));
  
  butStart.Size := new System.Drawing.Size(f.ClientSize.Width div 4, f.ClientSize.Height - (renPanel.ClientSize.Height + lBox.ClientSize.Height) );
  butStart.Location := new System.Drawing.Point(butOpen.Size.Width, f.ClientSize.Height - (f.ClientSize.Height - (renPanel.ClientSize.Height + lBox.ClientSize.Height)));
  
  butWp.Size := new System.Drawing.Size(f.ClientSize.Width div 4, f.ClientSize.Height - (renPanel.ClientSize.Height + lBox.ClientSize.Height) );
  butWp.Location := new System.Drawing.Point(butStart.Location.X+ButStart.Width, f.ClientSize.Height - (f.ClientSize.Height - (renPanel.ClientSize.Height + lBox.ClientSize.Height)));
end;
 
procedure ButOpCl(sender:object;E:System.EventArgs);
begin
MessageBox.Show('Кнопка открыть нажата');
end;
procedure ButStCl(sender:object;E:System.EventArgs);
begin
MessageBox.Show('Кнопка начать нажата');
end;
procedure ButSetCl(sender:object;E:System.EventArgs);
begin
MessageBox.Show('Кнопка настройки нажата');
end;
begin
  f := new Form();
  f.Text:='TEST';
 F.Size := new System.Drawing.Size(500, 500);
  f.SizeChanged += fsc;
  
  renPanel := new Panel();
  renPanel.Size := new System.Drawing.Size(f.ClientSize.Width, f.ClientSize.Height div 2);
  renPanel.BackColor := System.Drawing.Color.red;
  lBox := new ListBox();
  lBox.Location := new System.Drawing.Point(renPanel.Location.x, renPanel.Location.Y + renPanel.Height);
  lBox.Size := new System.Drawing.Size(renPanel.Width, f.ClientSize.Height - renPanel.Height - (f.ClientSize.Height div 15) );
  
  butOpen := new Button();
  butOpen.Size := new System.Drawing.Size(f.ClientSize.Width div 4, f.ClientSize.Height - (renPanel.ClientSize.Height + lBox.ClientSize.Height) );
  butOpen.Location := new System.Drawing.Point(0, f.ClientSize.Height - (f.ClientSize.Height - (renPanel.ClientSize.Height + lBox.ClientSize.Height)));
  butOpen.Text := 'ОТКРЫТЬ';
  butOpen.Click+=ButOpCl;
  
  butStart := new Button();
  butStart.Size := new System.Drawing.Size(f.ClientSize.Width div 4, f.ClientSize.Height - (renPanel.ClientSize.Height + lBox.ClientSize.Height) );
  butStart.Location := new System.Drawing.Point(butOpen.Size.Width, f.ClientSize.Height - (f.ClientSize.Height - (renPanel.ClientSize.Height + lBox.ClientSize.Height)));
  butStart.text := 'НАЧАТЬ';
  ButStart.Click+=ButStCl;
  
  butWp := new Button();
  butWp.Size := new System.Drawing.Size(f.ClientSize.Width div 4, f.ClientSize.Height - (renPanel.ClientSize.Height + lBox.ClientSize.Height) );
  butWp.Location := new System.Drawing.Point(butStart.Location.X+ButStart.Width, f.ClientSize.Height - (f.ClientSize.Height - (renPanel.ClientSize.Height + lBox.ClientSize.Height)));
  butWp.text := 'НАСТРОЙКИ';
  ButWP.Click+=ButSetCl;
  
  for var i := 0 to 100 do
    lBox.Items.Add(i);
  
  f.Controls.Add(butWp);
  f.Controls.Add(butStart);
  f.Controls.Add(butOpen);
  f.Controls.Add(lBox);
  f.Controls.Add(renPanel);
  
  Application.EnableVisualStyles;
  Application.Run(F);
end.
0
01.08.2014, 13:48
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2014, 13:48

Надо найти библиотеку для PascalABC NET
Всем привет. Вот сейчас пишу движок для PascalABC NET. Для графики взял OpenGL. Теперь начал делать...

Создание своего модуля для PascalABC.net
Здравствуйте уважаемые форумчане, подскажите как создать из файла Pas файл PCU. Чем и как его можно...

Ошибка при создании меню в PascalABC.net для игры
ПОМОГИТЕ СРОЧНО!Я хочу заключить процедуры в одну процедуру для меню, для того чтобы запускать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.