Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Помогите со скриптом (http://forum.oszone.net/showthread.php?t=302578)

PlanktoN 18-07-2015 10:08 2529952

Помогите со скриптом
 
Пишу конвертор на Pascal'е. Не понимаю. Гапример создаю кнопку и на новую страницу переходит. Типа нажимаю Масса и новая страница. Помогите скрпит написать.

lxa85 18-07-2015 11:27 2529966

PlanktoN, Здравствуйте. А можете более четко проблему обрисовать?
А то какой то конвертор, какие то кнопки, страницы, массы.
Ничего не понятно.

PlanktoN 18-07-2015 16:05 2530011

TForm2 создать надо. И переход к TForm2 кнопкой т.е TButton

lxa85 18-07-2015 20:48 2530080

Так и создавайте.
File - New - Form
В uses добавляете unit2 (от второй формы)
Если надо, то в верхнем меню есть управление (добавление/удаление) форм.
По нажатию кнопки -
Form2.Visible:=true;
Form2.SetActive;
Или что то в этом роде.

opel431 18-07-2015 21:21 2530091

Цитата:

Цитата PlanktoN
TForm2 создать надо. И переход к TForm2 кнопкой т.е TButton »

Если я правильно Вас понял, то, все зависит от того, что Вы используете....FPC, PascalABC, Lazarus, Delphi (в основе всего Паскаль). не буду гадать, подсказка на Delphi.
1. Как форма создана в проекте Auto-create (автосоздаваемые) или Available (доступные) .
2. Если Auto-create то вызов в OnClick
Код:

Form2.Show; // обычная форма
//или Form2.ShowModal; // модальная форма

3. Если Available то
Код:

if (not Assigned(Form2)) then // проверка существования Формы
Form2:=TForm2.Create(Self); // создание формы)
Form2.Show; // обычная форма
//или Form2.ShowModal;  // модальная форма

Зайдите - http://freepascal.ru

PlanktoN 24-07-2015 23:55 2532315

Попробую.

PlanktoN 31-07-2015 16:31 2534938

в Unit1 добавляю в Uses unit2. В Unit2 добавляю в Uses unit1. И не компилируется. Что делать?

lxa85 01-08-2015 14:59 2535395

Цитата:

Цитата PlanktoN
Что делать? »

Писать более развернутые и понятные предложения.
Например указывать номер ошибки, порядок добавления файлов.
Попробовать выполнить трассировку по шагам.
Постараться свыкнуться с мыслью, что не все прошли школу телепатов...
Что то в это роде. Вас тяжело понять.

Iska 01-08-2015 19:00 2535514

И обязательно выкладывать код (а в данном случае — весь проект).

opel431 01-08-2015 20:14 2535537

Цитата:

Цитата PlanktoN
Что делать? »

Вы даже предыдущие посты не читали, потому и не пояснили в какой среде Вы варите свою кухню! Оттого и ответ такой будет...наугад!
пример на Win32_API

Код:

program AMain;

uses
  Windows, Messages;

const
  ClassName1 = 'Wnd1';
  ClassName2 = 'Wnd2';
  Form1 = 'Form1';
  Form2 = 'Forn2';
  FWidth1 = 600;
  FHeight1 = 480;
  FWidth2 = 300;
  FHeight2 = 200;

  IDC_BUTTON1 = 1;

var
  hWnd2: DWORD;

  hwndButton1: DWORD;

function Wnd1Proc(hWnd1: HWND; uMsg: UINT; wParam: wParam; lParam: LParam):
  lresult; stdcall;
var
  x, y : integer;
begin
  Result := 0;
  case uMsg of
    WM_CREATE:
      begin
        x := GetSystemMetrics(SM_CXSCREEN);
        y := GetSystemMetrics(SM_CYSCREEN);
        MoveWindow(hWnd1, (x div 2) - (FWidth1 div 2),
          (y div 2) - (FHeight1 div 2),
          FWidth1, FHeight1, true);

        hwndButton1 := CreateWindowEx(0, 'BUTTON', 'Вторая форма',
          WS_CHILD or WS_VISIBLE, 200, 200,
          200, 25, hWnd1, IDC_BUTTON1, hInstance, nil);
      end;
    WM_COMMAND:
      begin
        if hiword(wParam) = BN_CLICKED then
          case loword(wParam) of
            IDC_BUTTON1:
              hwnd2 := CreateWindowEx(0, ClassName2, Form2,
                WS_OVERLAPPEDWINDOW or WS_VISIBLE, 40, 10,
                300, 200, hWnd1, 0, hInstance, nil);
          end;
      end;
    WM_DESTROY:
      begin
        PostQuitMessage(0);
      end;
  else
    Result := DefWindowProc(hWnd1, uMsg, wParam, lParam);
  end;
end;

function Wnd2Proc(hWnd2: HWND; iMsg: UINT; wParam: wParam; lParam: LParam):
  lresult; stdcall;
var
  x, y : integer;
begin
  Result := 0;
  case iMsg of
    WM_CREATE:
      begin
        x := GetSystemMetrics(SM_CXSCREEN);
        y := GetSystemMetrics(SM_CYSCREEN);
        MoveWindow(hWnd2, (x div 2) - (FWidth2 div 2),
          (y div 2) - (FHeight2 div 2),
          FWidth2, FHeight2, true);
      end;
    else
      Result := DefWindowProc(hWnd2, iMsg, wParam, lParam);
  end;
end;

var
  wc: TWndClassEx = (
    cbSize          : SizeOf(TWndClassEx);
    Style          : CS_HREDRAW or CS_VREDRAW;
    lpfnWndProc    : @Wnd1Proc;
    cbClsExtra      : 0;
    cbWndExtra      : 0;
    hbrBackground  : COLOR_APPWORKSPACE;
    lpszMenuName    : nil;
    lpszClassName  : ClassName1;
    hIconSm        : 0;
  );
  msg: TMsg;

begin
  wc.hInstance  := hInstance;
  wc.hIcon      := LoadIcon(hInstance,MAKEINTRESOURCE(100));
  wc.hCursor    := LoadCursor(0, IDC_ARROW);

  RegisterClassEx(wc);

  CreateWindowEx(0, ClassName1, Form1, WS_VISIBLE or
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, FWidth1, FHeight1, 0, 0, hInstance,
    nil);

  wc.hInstance  := hInstance;
  wc.lpfnWndProc := @Wnd2Proc;
  wc.hIcon      := LoadIcon(0, IDI_INFORMATION);
  wc.hCursor    := LoadCursor(0, IDC_ARROW);
  wc.lpszClassName := ClassName2;

  RegisterClassEx(wc);

  while GetMessage(msg,0,0,0) do
  begin
    TranslateMessage(msg);
    DispatchMessage(msg);
  end;
  ExitCode := msg.wParam;
end.


Если бы написали, что с использованием VCL (что исходит из Ваших попыток добавления модулей), то и ответ, был бы иным.


Время: 15:57.

Время: 15:57.
© OSzone.net 2001-