Консультация № 188751
31.01.2016, 01:40
0.00 руб.
0 4 0
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Помогите, пожалуйста, задать регион в лазарусе:
var
Form12: TForm12;
i:integer;
Ar: array[0..19]of TPoint=((X:48;Y:660), (X:48;Y:55),(X:645;Y:55),(X:645;Y:2 90),(X:290;Y:290),(X:290;Y:550), (X:545;Y:550),(X:545;Y:435),(X:435; Y:435),(X:435;Y:535),(X:335;Y:535), (X:335;Y:335),(X:645;Y:335),(X:645; Y:650),(X:190;Y:650),(X:190;Y:190), (X:545;Y:190),(X:545;Y:155),(X:148; Y:155),(X:148;Y:660));
Rgn1: HRGN;
implementation
Uses Unit13;
{$R *.lfm}
выдает ошибки: unit12.pas(36,13) Error: Identifier not found "HRGN"
unit12.pas(36,13) Error: Error in type definition

После добавления строки:
type
HRgn = THandle;

выдает ошибку в другом месте:
Rgn1:=CreatePolygonRgn(Ar,20,Windin g);
unit12.pas(67,23) Error: Identifier not found "CreatePolygonRgn"
unit12.pas(67,37) Error: Identifier not found "Winding"


Что я делаю не так?
Windows7, лазарус 64-х разрядный

Обсуждение

давно
Профессионал
153662
1070
31.01.2016, 14:27
общий
Адресаты:
У меня нет лазаруса к сожалению, а в делфи 7 всё робит нормально.
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
i:integer;
Ar: array[0..19]of TPoint=((X:48;Y:660), (X:48;Y:55),(X:645;Y:55),(X:645;Y:290),(X:290;Y:290),(X:290;Y:550), (X:545;Y:550),(X:545;Y:435),(X:435; Y:435),(X:435;Y:535),(X:335;Y:535), (X:335;Y:335),(X:645;Y:335),(X:645; Y:650),(X:190;Y:650),(X:190;Y:190), (X:545;Y:190),(X:545;Y:155),(X:148; Y:155),(X:148;Y:660));
Rgn1: HRGN;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var Windin: integer;
begin
Rgn1:=CreatePolygonRgn(Ar,20,Windin);
end;

end.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Посетитель
399468
3
31.01.2016, 15:06
общий
31.01.2016, 15:08
На Делфи и у меня все работает! А вот с Лазарусом проблема. Нужно написать именно в Лазарусе. Но в любом случае спасибо за помощь!
давно
Мастер-Эксперт
425
4118
31.01.2016, 18:34
общий
31.01.2016, 18:35
Адресаты:
В Lazarus'е с подключёнными по умолчанию модулями не все типы данных определены в явном виде, т.к. кроссплатформенная реализация предусматривает использование в интерфейсе программы более высокоуровневые типы данных. Для использования "низкоуровневых" типов (тот же HRGN к примеру) надо дополнительно подключить модуль "lcltype".
unit12.pas(67,23) Error: Identifier not found "CreatePolygonRgn"

Аналогичная ситуация - для использования этой функции нужно подключить модуль Windows (если Вы программируете в операционной системе Windows).
unit12.pas(67,37) Error: Identifier not found "Winding"

А вот это уже, наверное, Ваше изобретение.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Посетитель
399468
3
31.01.2016, 19:24
общий
Спасибо большое! После подключения библиотеки windows, ошибки исчезли
Форма ответа