![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Win32Api и VCL [D7, Win2k]
AlexG © (2002-12-12 14:05:00)Можно ли в приложение созданом средствами WinApi как нибудь попользовать визуалный компонент из VCL?
Anatoly Podgoretsky (2002-12-13 14:28:00) [1]Размер возможно еще и больше будет, за счет дублирования кода
Игорь Шевченко (2002-12-13 14:14:00) [2]А зачем себе такой геморрой устраивать ? Кода получится немеряно, ошибки искать замучаешься, размер все равно будет большой.
Не проще ли обычный путем, форма, DataSet, DataSource, DBGrid ?
AlexG (2002-12-13 13:41:00) [3]Нельзя так нелья! может кто подскажет как средстваи винапи работать с базами и в к данном случае с быть с DBGrido_м
AlexG (2002-12-13 11:55:00) [4]Че за отладчик?
а вообще то когда я прицепил к DBGrid_у DataSource и к той TTable
он все таки запустился, но нет нет выкидывает тип того
"---------------------------
Phone
---------------------------
Control "" has no parent window.
---------------------------
OK
---------------------------
"
Игорь Шевченко (2002-12-13 11:35:00) [5]AlexG (13.12.02 11:12)
DBGrid при своем прорисовке вызывает метод ValidParentForm (если тебе лень пользоваться отладчиком), который в твоем случае возвращает значение nil, так как формы нету. Отсюда вывод - не получится DBGrid и прочие компоненты, которым позарез форма нужна, класть на произвольное окно.
А отладчик - рулез. Рекомендую. Исходники VCL - тоже рулез. Рекомендую. И "Учиться, учиться и учиться", как завещал великий Ленин.
AlexG (2002-12-13 11:12:00) [6]а зачем ему данные брать!
в Делфевом приложении он и без данных прорисовывается!
Ketmar (2002-12-13 10:54:00) [7]хм... а рассказать DBGrid"у, откуда ему данные брать - ни-ни?
Satanas Nobiscum! 13-Dec-XXXVII A.S.
AlexG (2002-12-13 09:52:00) [8]Хороший совет! только не сильно помогает!
приведу код
вроде бы он полностью коректен
program Phone;
uses
Windows,
Messages,
Grids,
DBGrids;
var
Wc: TWndClassEx;
MainWnd: HWND;
Mesg: TMsg;
function WindowProc(wnd:HWND; Msg: Integer; Wp: WParam; Lp: LParam): LResult; stdcall;
begin
case msg of
wm_destroy:
begin
PostQuitMessage(0);
Exit;
Result := 0;
end;
else
Result := DefWindowProc(wnd, msg, wp, lp);
end;
end;
var
xPos,yPos,nWidth,nHeight : Integer;
Gr: TDBGrid;
B1: HWND;
begin
wc.cbSize:=sizeof(wc);
wc.style:=cs_hredraw or cs_vredraw;
wc.lpfnWndProc:=@WindowProc;
wc.cbClsExtra:=0;
wc.cbWndExtra:=0;
wc.hInstance:=HInstance;
wc.hIcon:=LoadIcon(0,IDI_INFORMATION);
wc.hCursor:=LoadCursor(0,idc_arrow);
wc.hbrBackground:=COLOR_BTNFACE+1;
wc.lpszMenuName:=nil;
wc.lpszClassName:="WinMin : Main";
RegisterClassEx(wc);
xPos:=200;
yPos:=200;
nWidth:=400;
nHeight:=300;
MainWnd:=CreateWindowEx(0,"WinMin : Main","Phone",ws_overlappedwindow,
xPos,yPos,nWidth,nHeight,0,0,Hinstance,nil);
Gr := TDBGrid.Create(nil);
with Gr do
begin
Left := 10;
Top := 10;
Width := 100;
Height := 100;
ParentWindow := Mainwnd;;
end;
ShowWindow(MainWnd,SW_NORMAL);
While GetMessage(Mesg,0,0,0) do
begin
TranslateMessage(Mesg);
DispatchMessage(Mesg);
end;
end.
но ошибка все равно выходит хоть ты че делай!
Игорь Шевченко (2002-12-13 09:38:00) [9]Отладчик в руки и искать ошибку.
AlexG (2002-12-13 08:55:00) [10]Спасибо помогло! Помогла "строка parentwindow:="
Правда мне надо создать DBGrid попробовал этим способом выдает ошибку не пойму в чем дело, ошибка следующая:
Project Phone.exe raised exception class EListError with message "List index out of bounds (0)". Process stopped. Use Step or Run to continue.
Diamond Cat (2002-12-13 03:53:00) [11]типа
var
b:Tbutton;
begin
b:=Tbutton.create(..
with b do begin
parentwindow:=
left:=
top:=
и т.д.
Игорь Шевченко (2002-12-12 14:33:00) [12]Можно