Текущий архив: 2002.06.13;
Скачать: CL | DM;
Вниз
Как используя только WinApi, Создать на форме : Найти похожие ветки
← →
IronHawk © (2002-04-29 17:08) [0]СпидБуттон Размером 15х15 в позиции 3х3, подкрепить под него действие Form1.color:=clRed; ???
.... жду советов толковых.
← →
ZZ (2002-04-29 17:21) [1]Объясни используя только термины WinAPI что такое спидбуттон, форма и Form1.Color?
Ждем толковых вопросов :)
← →
IronHawk © (2002-04-29 17:26) [2]
> ZZ (29.04.02 17:21)
> Объясни используя только термины WinAPI что такое спидбуттон,
> форма и Form1.Color?
SpeedButton: ТSpeedButton;
TForm1 = class(TForm)
Form1: TForm1;
Form1.Color - Use Color to read or change the background color of the control.
← →
ZZ (2002-04-29 17:30) [3]Тогда так
SB1:=TSpeedButton.Create(Form1);
SB1.Parent:=Form1;
SB1.Left:=3;
SB1.Top:=3;
Sb1.Width:=15;
SB1.Height:=15;
← →
IronHawk © (2002-04-29 17:33) [4]
> ZZ (29.04.02 17:30)
А далеше ? ...
← →
Malder © (2002-04-29 17:39) [5]IronHawk, а вот и все =)
ZZ, только при чем здесь WinAPI ?
← →
ZZ (2002-04-29 17:40) [6]procedure TForm1.onSBClick(Sender:TObject);
begin
Self.color:=clRed;
end;
SB1.onClick:=SBClick;
=============
:) {Это не совсем WinAPI.. Это скорее даже совсем не WinAPI :)
В WinAPI нет TSpeedButton и TForm, а есть окна }
← →
ZZ (2002-04-29 17:46) [7]Malder
А при чем тут TForm??? Если тебе не трудно ответь на вопрос IronHawk"а (особенно с Form1.color и SpeedButton)
← →
Malder © (2002-04-29 17:48) [8]Вопрос конечно глупый... ответить на него невозможно... если только не читать IronHawk лекции по WinAPI
← →
IronHawk © (2002-04-29 17:55) [9]
> Malder © (29.04.02 17:48)
> Вопрос конечно глупый... ответить на него невозможно...
> если только не читать IronHawk лекции по WinAPI
Но ZZ ответил.
← →
Malder © (2002-04-29 18:06) [10]ZZ, хех... ответил... только может ты объяснишь, при чем здесь WinAPI ?
← →
IronHawk © (2002-04-29 18:24) [11]
> Malder © (29.04.02 18:06)
Ок !
Следующий вопрос по ВинАПИ лично для тебя :
Как создать форму размером 30х150 без бордера ?
← →
Anatoly Podgoretsky © (2002-04-29 18:27) [12]ZZ (29.04.02 17:46)
А при том, что "используя только WinApi", ты его ни еспользовал, а использовал VCL
← →
IronHawk © (2002-04-29 18:37) [13]
> Anatoly Podgoretsky © (29.04.02 18:27)
Я просил тут не появляться, во избежание ругни???
← →
Digitman © (2002-04-29 18:41) [14]>IronHawk
Прекрати нести чушь !
Нет никаких форм в Win32API ! И никогда не было ! И не будет никогда ! "Форма" - термин, совершенно неэквивалентный термину "окно", если ты туда метишь
← →
Anatoly Podgoretsky © (2002-04-29 19:02) [15]IronHawk © (29.04.02 18:37)
Сделай свой форум и будешь моноаольно определять доступ к нему, ведь у тебя же есть сайт.
А ругаться ты горазд, вижу, что наши уроки орфографии не пошли во вред, прогресс на лицо.
← →
IronHawk © (2002-04-29 19:06) [16]
> Digitman © (29.04.02 18:41)
Здраствуйте !
Замечание принято !
Бум изьясняться (попробуем) терминологией !
Мечу в окно !
← →
IronHawk © (2002-04-29 19:14) [17]
Anatoly Podgoretsky © := ignore;
← →
Malder © (2002-04-29 20:27) [18]IronHawk:
>Ок !
>Следующий вопрос по ВинАПИ лично для тебя
да иди ты со своими проверками. Вообще, не понимаю, что ты здесь делаешь. Хочешь поставить в тупик кого-то? Потому как, собственно, ответ на вопрос тебя не очень интересует.
Ты добился своего - лично я не буду отвечать на твои вопросы.
← →
IronHawk © (2002-04-29 23:34) [19]
> Malder © (29.04.02 20:27)
> Ты добился своего - лично я не буду отвечать на твои вопросы.
Так, одним флудером меньше !
Хорошо !
А теперь продолжим тему: Как создать форму размером 30х150 без бордера ?
← →
Doom © (2002-04-30 00:10) [20]
> IronHawk © (29.04.02 23:34)
похоже скоро придется тебе ник менять если так и будешь всем грубить
← →
Sirus © (2002-04-30 07:58) [21]> All:
Может кто-то и не будеть даже понимать что я имею ввиду... но попытаться следует...
Так, во первых кто-то сказал что понятия ФОРМА в ВИНАПИ нету... отвечаю.... ЕСТЬ такая буква... И Даже СПИДБУТТОН тоже есть...
В Принципе то что ты делаешь в билдере дельфи, дельфи передает виндовсу как ту же программку только на ВИНАПИ... Следовательно чтобы создать ОКНО ВИНАПИ требуется простая ФОРМА... свойства формы определяют свойства окна...
Да и еще... в очень многих случаях ФОРМА очень эквивалентна ОКНУ... я бы сказал в очень многих случаях... разница лишь в рантайме... и дезайнтайме...
А вопрос совсем не глупый был... просто его не поняли...
существует такая проблема:
Как средствами ВИНАПИ создать на форме (окне) в позиции 3Х3 кнопку размером 15Х15, имеющую свойства знакомого нам всем СПИДБУТТОНа.... то есть кнопку не имеет табстопа, зачастую плоская и т.д......
Если кто-то ответит на этот вопрос вразумительно, то я (надеюсь IronHawk тоже) буду очень признателен этому "кто-то"....
With best regards Sirus
← →
Я © (2002-04-30 08:32) [22]To:IronHawk ©
>Как создать форму размером 30х150 без бордера ?
Создать форму с бордером и убрать бордер...
← →
IronHawk © (2002-04-30 10:22) [23]
> Doom © (30.04.02 00:10)
>
> > IronHawk © (29.04.02 23:34)
>
> похоже скоро придется тебе ник менять если так и будешь
> всем грубить
Не всем, а только особо злостным флудерам и песполезно-советчикам!
> Sirus © (30.04.02 07:58)
Ура! Наконец нашелся человек который им правильно розьяснил постановку дел, а то наехать все гаразды, а как послушать так нет.
> Если кто-то ответит на этот вопрос вразумительно, то я (надеюсь
> IronHawk тоже) буду очень признателен этому "кто-то"....
>
> With best regards Sirus
Полностью и беззаговорочно потдерживаю!
← →
mad0max (2002-04-30 11:40) [24]to IronHawk
Помогите у меня проблема
как записать на Excell"е avi-файл, а то что-то под рукой больше ничего нет
:)
← →
amamed_3071 © (2002-04-30 11:53) [25]IronHawk
Открой Unit forms.pas и посмотри как создат!!!
← →
IronHawk © (2002-04-30 11:55) [26]
> mad0max (30.04.02 11:40)
Запросто!
← →
IronHawk © (2002-04-30 12:00) [27]
> mad0max (30.04.02 11:40)
Обратитесь к Анатолию Подгорецкому, Джонни Смиту или Олегу Кулюкину только в ветке http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1020082048&n=3.
Они точно помогут!
← →
Кулюкин Олег © (2002-04-30 12:06) [28]Жду когда эта ветка вылетит в "Потрепаться" :)))
← →
Sirus © (2002-04-30 12:09) [29]> mad0max
Если ты это в шутку... то я не вижу тут ничего шуточного... Это вполне возможно и исполнимо... Вот только с этим вопросом ты попал на форум Дельфи.... а надо было на форум по Visual Basic...
там тебе конечно не сразу но помогут...
With best regards Sirus
← →
IronHawk © (2002-04-30 12:12) [30]
> amamed_3071 © (30.04.02 11:53)
> IronHawk
> Открой Unit forms.pas и посмотри как создат!!!
Я вот так и подумал.
Пробую, но всё равно расчитываю на ! толковый! совет.
← →
IronHawk © (2002-04-30 13:39) [31]Иссправление: не СпидБуттон Размером 15х15 в позиции 3х3, а Буттон со свойствами СпидБуттона! А форма дожна быть БЕЗ бордера и краёв!
← →
mad0max (2002-04-30 14:35) [32]to IronHawk
И опять не угадал !!! Ну нет форм а WinApi только окна
← →
mad0max (2002-04-30 14:49) [33]to IronHawk
А вообще ты знаешь какой геморрой без VCL тебе грозит?
1. написать сздание окно (создание класса, регистрация класса)
2. переписывание оконной функции
3. Определение нового события (это правда просто, но все равно гемор)
Пользуйся VCL или тебя смущает размер исполняемого файла?
← →
IronHawk © (2002-04-30 15:06) [34]
> mad0max (30.04.02 14:35)
Окно должно быть со свойствами формы и быть без дордера и краёв
← →
mad0max (2002-04-30 15:09) [35]Ну и используй VCL и не будет тебе бордера!
А что значит нет краев?
← →
gek © (2002-04-30 15:12) [36]Пойми IronHawk © (30.04.02 15:06)
Без VCL ты примерно напишешь 10000 строк кода и наверняка с определенным количеством ошибок, с гораздо большей затратой времени, но с меньшим размером ехе файла.
С использованием VCL у тебя будет 1000 строк с гораздо меньшим количеством ошибок.
Выбирай но осторожно, но выбирай.
← →
mad0max (2002-04-30 15:16) [37]to gek
Я бы сказал c VCL нужно будет написать строк 10 остальное само напишется :)
← →
IronHawk © (2002-04-30 15:36) [38]
> gek © (30.04.02 15:12)
> Пойми IronHawk © (30.04.02 15:06)
> Без VCL ты примерно напишешь 10000 строк кода и наверняка
> с определенным количеством ошибок, с гораздо большей затратой
> времени, но с меньшим размером ехе файла.
> С использованием VCL у тебя будет 1000 строк с гораздо меньшим
> количеством ошибок.
> Выбирай но осторожно, но выбирай.
ОК!
VCL, согласен!
Так как Сабж сотворить на VCL?
← →
mad0max (2002-04-30 15:41) [39]to IronHawk
Дык эта бросай на форму кнопку, на OnClick на кнопке пишешь
Self.color:=clRed;
и все OkOb
← →
IronHawk © (2002-04-30 16:01) [40]
> mad0max (30.04.02 15:41)
Это я Сразу сделал!
Ладно, я понял, фига с два тут помогут.
ОК!
Спасибо !
← →
Кулюкин Олег © (2002-04-30 16:07) [41]2 IronHawk © (30.04.02 15:36)
> Так как Сабж сотворить на VCL?
См. ответ ZZ (29.04.02 17:30).
← →
mad0max (2002-04-30 16:19) [42]to IronHawk
Не надо обижать хороших людей, которые тусуются здесь! Мы тебе чем могли ответили-помогли!
Я же тебе писал
1. создавай окно (создание класса, регистрация класса)
2. переписывание оконной функции
3. Определение нового события (это правда просто, но все равно гемор)
итак строк 100 у меня времени нет писать, хотя направление я тебе указал думаю точно
← →
IronHawk © (2002-04-30 16:51) [43]
> mad0max (30.04.02 16:19)
> итак строк 100 у меня времени нет писать, хотя направление
> я тебе указал думаю точно
АГА!
← →
Malder © (2002-04-30 17:01) [44]Удалено модератором
← →
Jin (2002-04-30 17:59) [45]Знаете кого мне IronHawk напоминает ?
Мужика из стааааарого анекдота:
Цирк. Объявляют номер: Выступают клоуны!!!
Голос из зала: клоуны идиоты! пида%асы!
Объявляют следующий номер: Выступают акробаты!!!
Тот же голос из зала: акробаты идиоты!! пида%асы!
Объявляют следующий номер: А сейчас, дамы и господа, смертельный номер! Прижок из-под купола в кастрюлю с водой!!!
Голос из зала: Отпустите! Куда вы меня тащите?!? идиоты!! пида%асы!
← →
app © (2002-04-30 18:12) [46]Jin (30.04.02 17:59)
Еще один враг
Орленое орленок последней гранатой
из ветки врагов отмело
Меня называли орленком в отряде
Враги называли ...
← →
фтщв (2002-04-30 21:19) [47]2IronHawk
Я так и не понял, может тебе надо в свойствах формы выставить
Width = 30
Height=150
BorderStyle = bsNone
?
← →
IronHawk © (2002-04-30 23:51) [48]
> фтщв (30.04.02 21:19)
Это если, чётко через ВЦЛ.
А если у меня есть ....
...хотя это тема другой ветки.
← →
NA © (2002-05-02 00:24) [49]А мне еще один анекдот вспомнился по прочтении темы:
- .... [skippppp]
- .... [skippppp]
- Вовочка, а кто у тебя дома есть?
- Никого. Пахан - алкаш - бомжует, мать - проститутка, сестра сидит - она фармазонщица.
- Вовочка, а что у тебя голос такой гнусавый?
- Сифилис.
- А кем ты, Вовочка, хочешь стать?
- КОСМОНАВТОМ !!!!!!
← →
Вадим © (2002-05-02 00:38) [50]2IronHawk ©
Ты и вправду такой тупой?
← →
IronHawk © (2002-05-02 00:47) [51]
> Вадим © (02.05.02 00:38)
> 2IronHawk ©
>
> Ты и вправду такой тупой?
Не груби .....
← →
Evgeny © (2002-05-03 07:55) [52]>IronHawk
Твой вопрос по сути очень прост. И технически легко выполняется. Когда создаешь окно - не указывай параметр WS_BORDER, кнопку тебе придется отрисовывать вручную и отслеживать через WM_OWNERDRAW, таким образом ты сразу решишь все свои проблемы. Если хочешь подробнее, то пиши, отвечу на примере.
← →
IronHawk © (2002-05-03 23:21) [53]
> Evgeny © (03.05.02 07:55)
> . Если хочешь подробнее, то пиши, отвечу на примере.
Ессно хочу.
А ваще это мысль - неотресовывать сразу бордер!
← →
Evgeny © (2002-05-07 09:19) [54]Вот тебе небольшой набросок.
program noborder;
uses
Windows, Messages;
var
Wnd : HWND;
Msg : TMsg;
WndClass : TWndClass;
hBmp : HBITMAP;
Index : Integer;
const
BkColor : array[0..6] of TColorRef = ($FF0000, $00FF00, $0000FF,
$FFFF00, $FF00FF, $00FFFF,
$FFFFFF);
function WindowProc(Wnd: HWND; Msg: Integer;
wParam : Word; lParam: Longint): Integer; stdcall; export;
var
ps : TPaintStruct;
R : TRect;
Br : HBRUSH;
begin
WindowProc := 0;
case Msg of
WM_CREATE :
begin
// Здесь грузим картинку из ресурса
hBmp := LoadBitmap(hInstance, "test");
// и если нужно выводим на кнопку
SendMessage(GetDlgItem(Wnd, 100), BM_SETIMAGE, IMAGE_BITMAP, hBMP);
Index := 0;
end;
WM_PAINT :
begin
BeginPaint(Wnd, ps);
GetClientRect(Wnd, R);
br := CreateSolidBrush(BkColor[Index]);
FillRect(ps.hDC, R, Br);
DeleteObject(Br);
EndPaint(Wnd, ps);
end;
// Ну а это, чтобы было за что таскать окно.
// Таскаем за поверхность самого окна
WM_LBUTTONDOWN :
begin
ReleaseCapture;
SendMessage(Wnd, WM_SysCommand, $F012, 0);
end;
WM_COMMAND :
begin
case loWord(wParam) of
IDOK : SendMessage(Wnd, WM_CLOSE, 0, 0);
100 :
begin
InvalidateRect(Wnd, Nil, False);
inc(Index);
if Index > High(BkColor) then Index := 0;
end;
end;
end;
WM_DESTROY :
begin
DeleteObject(hBmp);
PostQuitMessage(0);
exit;
end;
end;
WindowProc := DefWindowProc(Wnd, Msg, WParam, LParam);
end;
begin
WndClass.style := CS_HREDRAW or CS_VREDRAW;
WndClass.lpfnWndProc := @WindowProc;
WndClass.cbClsExtra := 0;
WndClass.cbWndExtra := 0;
WndClass.hInstance := hInstance;
WndClass.hIcon := LoadIcon(0,idi_application);
WndClass.hCursor := LoadCursor(0, IDC_ARROW);
WndClass.hbrBackGround := GetStockObject(LTGRAY_BRUSH);
WndClass.lpszMenuName := "";
WndClass.lpszClassName := "noborder";
if RegisterClass(WndClass) = 0 then
Exit;
Wnd := CreateWindowEx(0,"noborder",
"noborder",
WS_SYSMENU or WS_POPUP,
100, 100, 300, 140, 0, 0,
hInstance, NIL);
CreateWindowEx(0, "BUTTON",
"", WS_CHILD or WS_VISIBLE or BS_BITMAP,
3, 3, 15, 15,
Wnd, 100,
hInstance, NIL);
CreateWindowEx(0, "BUTTON",
"Exit", BS_DEFPUSHBUTTON or WS_CHILD or WS_VISIBLE or WS_TABSTOP,
220, 100, 75, 24,
Wnd, IDOK,
hInstance, NIL);
ShowWindow(Wnd, CmdShow);
while(GetMessage(msg, 0, 0, 0)) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
Halt(msg.wParam);
end.
← →
IronHawk © (2002-05-07 10:23) [55]
> Evgeny © (07.05.02 09:19)
То что надо!
Никаких 2000 строк, никаких проблем с цветом формы, никаких проблем с размером формы и тем более самого *.ехе-шника!
Спасибо!
> Malder © (29.04.02 20:27)
Учитесь!
← →
Кулюкин Олег © (2002-05-07 10:43) [56]2 IronHawk © (07.05.02 10:23)
Вы хотели "СпидБутон", а в примере кнопки не зеленые (1), без картинок (2).
Стандартные "Бутоны", а не "СпидБутоны".
Если довести пример до кондиции, получится если не 2000 строк, то 1000 точно.
← →
IronHawk © (2002-05-07 11:04) [57]
> Кулюкин Олег © (07.05.02 10:43)
> 2 IronHawk © (07.05.02 10:23)
> Вы хотели "СпидБутон",
Снопку со свойствами СпидБутона!
а в примере кнопки не зеленые (1),
Несмешно!
> без картинок (2).
С картинками!
> Стандартные "Бутоны", а не "СпидБутоны".
см. выше.
> Если довести пример до кондиции, получится если не 2000
> строк, то 1000 точно.
До кондиции, надо больше строк!
← →
Evgeny © (2002-05-08 10:06) [58]>Кулюкин Олег
Если сильно нужно, то как я уже говорил выше можно не создавать стандартную кнопку, а полностью отрисовать свою. При этом можно ее сделать зеленой, красной или синей в крапинку. Разницы нет. Код увеличится буквально на 20 строчек. Можно одновременно выводит картинку и текст - это тоже не трудно. И конечно же для такой простой задачи не потребуется код на 1000 строк. С таким количеством строк на WinAPI вполне реально написать серьезную рабочую программу. А если посмотреть исходные файлы на SpeedButton, то прекрасно видно, что данная кнопка полностью отрисовывается с нуля без создания класса. И размер исходного файла не заслуга VCL, а его беда. Ну не умеет он делать маленьких файлов и с каждым новым выпуском Delphi, у него это получается все хуже. Попробуйте ради интереса скомпилировать один и тот же проект под Delphi 2, а потом под 5. Разница, что и говорить, печальная.
← →
IronHawk © (2002-05-08 12:58) [59]to ALL
Учитесь у Evgeny © человек новый, но корректно, красиво, по существу ответил на вопрос, лишних глупых переспросов и терминологических руганий небыло, нареканий и упрёков, и даже дал "тупой код"!
Таких людей надо по больше в форум!!!
to Evgeny ©
Спасибо ещё раз!
← →
Дремучий © (2002-05-08 13:49) [60]2 IronHawk
>>Учитесь у Evgeny © человек новый
Login: Evgeny 14.08.01 09:04 (примерная дата ввода регистрации)
Login: IronHawk 26.12.01 10:19
насчет нового человека, это ты погорячился...
;)
← →
Подонок (2002-05-08 13:59) [61]Надо же мы с хавчиком в один день появились...вроде как. Ну класс.
← →
IronHawk © (2002-05-08 14:05) [62]
> Дремучий © (08.05.02 13:49)
> 2 IronHawk
> >>Учитесь у Evgeny © человек новый
>
> Login: Evgeny 14.08.01 09:04 (примерная дата ввода регистрации)
> Login: IronHawk 26.12.01 10:19
>
> насчет нового человека, это ты погорячился...
> ;)
Дремучий ты, я не про регистрацию, а про посещение моих веток!!!
← →
SPeller © (2002-05-08 14:05) [63]2Evgeny
Ой, ну пасибки, запустил ваш код... Ну хоть порадовался за размер ЕХЕ-шника из Дельфи шестой... Ну прям радость... :-)))
← →
Дремучий © (2002-05-08 14:24) [64]2IronHawk © (08.05.02 14:05)
>>Дремучий ты, я не про регистрацию, а про посещениемоих
>>веток!!!
У тебя очень интересная точка отсчета. :))
Откуда ты знаешь, сколько он их посещает, ты можешь видеть, только, сколько он отвечает.
и еще,
2Evgeny
скоро похвала Хавка, будет хуже нагоняев модератора.
Так что задумайся...
;)
← →
Evgeny © (2002-05-08 14:56) [65]Как сказал Panov, я ко всем стараюсь относится ровно, но не по должности, а просто тошно лаяться (жаль не всегда получается). И если я попал на форум, да еще знаю ответ, то стараюсь ответить.
← →
Дремучий © (2002-05-08 17:06) [66]2 Evgeny ©
стараться как минимум нужно тогда, когда этот ответ нужен
этому человеку,а здесь Хавк решил в роли экзаменатора потусоваться, ты же видишь, что это ветка в ПОТРЕПАТЬСЯ и
относиться к ней нужно соответственно.
как говаривал дон Хуан,
БЕЗУПРЕЧНОСТЬ - есть ни что иное,
как адекватное распределение энергии
← →
IronHawk © (2002-05-09 00:52) [67]
> Дремучий © (08.05.02 17:06)
> 2 Evgeny ©
> стараться как минимум нужно тогда, когда этот ответ нужен
>
> этому человеку,а здесь Хавк решил в роли экзаменатора потусоваться,
> ты же видишь, что это ветка в ПОТРЕПАТЬСЯ и
> относиться к ней нужно соответственно.
>
> как говаривал дон Хуан,
> БЕЗУПРЕЧНОСТЬ - есть ни что иное,
> как адекватное распределение энергии
Ты полностью соответствуешь своему нику.
Я никого в этой ветке не экзаменовал.
Страницы: 1 2 вся ветка
Текущий архив: 2002.06.13;
Скачать: CL | DM;
Память: 0.65 MB
Время: 0.012 c