Помощь новичкам


#619

Текстовая переменная это string, переменная текстового файла это TextFile.

А вот пример с System.Windows.Forms:

{$reference System.Windows.Forms.dll}
{$reference System.Drawing.dll}

begin
  var main_form := new System.Windows.Forms.Form;
  main_form.StartPosition := System.Windows.Forms.FormStartPosition.Manual;
  main_form.Bounds := new System.Drawing.Rectangle(100,100,500,300);
  main_form.Closing += procedure(o,e)->System.Diagnostics.Process.GetCurrentProcess.Kill;
  
  
  
  var b1 := new System.Windows.Forms.Button;
  main_form.Controls.Add(b1);
  b1.Bounds := new System.Drawing.Rectangle(50,100,400,100);
  b1.Text := 'b1 text';
  b1.MouseClick += procedure(o,e)->writeln('b1 clicked');
  
  
  
  var ch_form := new System.Windows.Forms.Form;
  ch_form.StartPosition := System.Windows.Forms.FormStartPosition.Manual;
  ch_form.Bounds := new System.Drawing.Rectangle(200,400,300,200);
  ch_form.ControlBox := false;
  ch_form.Owner := main_form;
  
  
  
  var b2 := new System.Windows.Forms.Button;
  ch_form.Controls.Add(b2);
  b2.Bounds := new System.Drawing.Rectangle(50,50,200,100);
  b2.Text := 'b2 text';
  b2.MouseClick += procedure(o,e)->writeln('b2 clicked');
  
  (new System.Threading.Thread(procedure->
    System.Windows.Forms.Application.Run(main_form)
  )).Start;
  
  
  
  {
  //для последней формы не обязательно запускать новый поток, потому что дальше ничего не делается
  (new System.Threading.Thread(procedure->
    System.Windows.Forms.Application.Run(ch_form)
  )).Start;
  {}
  System.Windows.Forms.Application.Run(ch_form);
  
end.

#620

Тут еще неприятности:

random перестал работать - невозможно преобразовать интегер к систем рандом.

и самое главное, окно появилось (когда техт поубирал) но пока его не закроешь, не запускается программа в главном графическом окне


#621

Всегда прилагайте код программы. Никто не может угадать что и где не так пошло.


#622

а понял, поменял Text на TextFile, заработало и файл создается.

прога у меня большая очень уже.

просто в начале программы вставил "

f := new Form;

btn := new Button;

btn.Text := ‘Click me’;

btn.Click += ButtonClick;

f.Controls.Add(btn);

Application.Run(f);

" пока окно не закрою, я так понимаю висит в окне, а мне нужно чтоб оно одновременно работало.


#623

Эх, давайте я ещё раз объясню…

Выделять код правильно так:

```

begin

end.

```

Превращается в:

begin
  
end.

При чём на строчках с ``` больше ничего не должно быть, иначе их глючит.

А теперь вы мне объясните, что именно имели в виду, потому что я ничего не понял.


#624

Спасибо за Ваше терпение, не судите строго, последний раз программировал под комп лет 10 назад :slight_smile:

Суть в том, что запускаются окна, графическое и то что прописал с кнопкой. Так вот пока не закрою то что с кнопкой, в графическом программа остановлена.

как я понимаю после строки -

Application.Run(f); 

программа работает только в 2м окне.


#625

Ну я же так и написал в своей программе. Там закомментирован запуск потока для второй формы потому что это последнее в коде программы. Когда вызывается Application.Run - он отдаёт целый вызвавший поток запускаемой апликации. Запускайте в отдельном потоке, чтоб не основной отдавало форме.


#626

убрал строчку

System.Windows.Forms.Application.Run(ch_form);

заработало :slight_smile: теперь у меня 2 окна, одно из них графическое, запускаются в одной программе. Спасибо большое :slight_smile:


#627

Её вообще не убрать надо было а занести в отдельный поток… Но моя программа создаёт 2 не_графических окна, если вам второе не нужно - уберите всё связанное с ch_from и b2.


#628

не получается задать начальное расположение окон на экране, размер окон понял как менять, а вот где им сразу находиться ну никак :frowning:


#629

Смотрите как я поставил у первого окна в моей программе:

  main_form.StartPosition := System.Windows.Forms.FormStartPosition.Manual;
  main_form.Bounds := new System.Drawing.Rectangle(100,100,500,300);

То есть надо указать позицию и размер через Bounds (вообще есть ещё полно других свойств, позволяющих указывать отдельно, но Bounds это всё вместе). Но ещё надо не забыть поставить StartPosition на FormStartPosition.Manual, иначе позиция будет перезаписана, на значение по умолчанию для вашей винды, когда форма стартует. Кстати не важно в каком порядке их ставить, главное оба до старта формы.


#630

С дополнительным окном все получилось :slight_smile:

А с графическим не понятно, Там так прописано:

  window.Caption := 'название';
  SetWindowSize(800, 640);
  window.IsFixedSize := true;
  LockDrawing;

далее идет тело программы.

Что-то не получается. Пытался что-то втулить - Выдает ошибки такое-то не объявлено в граф абс виндовс


#631

Ещё раз, давайте текст программы, а не слабое описание ошибки. Прикрепите файлом, что ли. Архивом если много файлов.


#632

разобрался, в GraphABC положение окна прописывается так - SetWindowPos(0,0);


#633

Как разбить программу на несколько кусков? чтоб были в разных файлах. Но переменные были связаны.

Блин что-то не соображу.

Т.е. программа у меня раздулась не удобно по ней перемещаться. Есть несколько блоков А Б С Нужно чтоб была главная. и блоки эти.

Как правильно прописать?


#634

Главный блок оставить где есть, а дополнительные разнести на модули. Ищите в справке как делать модули.


#635

мдаа… если честно сделано неудобно. Можно было бы по проще что нибудь придумать. типа:

 call блок1 

создаем файл паскаля типа

Блок 1
бегин 
......
энд
return

чтоб всякий мусор лишний не писать.

придется все в 1м файле писать, не понравились мне модули так как они реализованы.


#636

У нас есть русская версия с ключевыми словами

бегин

энд

#637

это шутка? :slight_smile: просто шрифт не охота было переключать :))) и так же понятно думаю.


#638

Ещё есть регионы, кстати:

{$region My First Region}

{$endregion My First Region}

Но они не будут работать пока в настройках не включите сворачивание кода. Оно почему то по умолчанию выкл)).