Участвуйте в конкурсе "Статья месяца" и вы выиграете книгу по Delphi от магазина ОЗОН. В конце каждого месяца Вами будет выбран лучший автор, который и получит книгу. Присылайте ваши статьи на e-mail: autor@cooler.com.ua.или
сюда pixel@novgorod.net
ув. Подписчики. пожалуйста оцените труд данных авторов отдав свой голос за того, кого вы считаете достойным. 31 июля по итогам голосования лучшему автору будет подарену книга от магазина "ОЗОН". Если вы хотите увидить своё имя среди авторов - то прочитайте условия конкурса
Недавно размышлял на тему, как я вообще
связался с программированием...(кому не
интересно пусть не читают)
Ну так вот, все началось с того,
что я увидел VB (visual basic), перспектива клепать
программы с минимум кода, меня очень
обрадовала. Но VB мне очень скоро надоел, и
был заброшен пылиться на полке(до сих пор
там). Однако, шло время менялся софт и хард,
очень скоро я заметил, что игры мне уже
надоели, а в виндах критически бесил Wordpad,
мне не нравилась его скорость работы, тогда
я вспомнил, что при помощи VB можно написать
свой, я пошел в ближайший магазин за свежей
версией(был 98 год, а у меня VB3.2 ). Там мне
сказали что я дурак, я сунули Дельфи5.0. До
сих пор благодарен им за это...
По началу, у меня ничего не
клеилось, пришлось спуститься к истокам , то
есть к паскалю. Потом все закрутилось-завертелось,
программы шли одна за другой,
Autorunner,MyPad,RichEditor, arkanoid и еще пара
первоапрельских "вирусов".
Сейчас я изучаю OpenGL и BorlandC++ Builder,
кстати идеальное дополнение к дельфи.
Кстати, я тут перед вами
распинаюсь, а вы даже не проголосовали
(ведь, хоть кто-то нашел для себя
полезную информацию в моих заметках?)
Так уж получилось, что Дельфи
создавали для офисных приложений, и о
красивом и прекрасном никто не думал.
Данная статья, о том, как сделать кнопку, из
картинки...
Для начала нам понадобится
программа-рендерер вот вам список того, что
подойдет
Crystal 3d impcat
Button Factory
Button Studio
3d STudio MAX
Xara 3d
Adobe Photoshop (используйте фильтр
барельеф)
Crystal FlyingFontsPro
С помощью одной ,из этих
программ нарисуйте две кнопки близняшки(одна
будет нажатая, а другая нет) одинакового
размера.
Если вы рисуете не в BMP, то фон
подгоните под цвет формы.
Теперь, сделайте вашу кнопку в
таком формате, чтобы не много весила (до 100к).
Потом Разместите кнопку на форме, с помощью
компонента картинки (не обязательно TImage),
который имеет свойство OnClick, там напишите
код меняющий в момент нажатия картинку и в
момент окончания возвращающий картинку
на место(лучше всего использовать таймер с
задержкой на 2-4 мСек).
Если получился эффект мерцания ,воспользуйтесь
одним из VCLов , что я предлагал в прошлом
номере. В идеале кнопка "вмяться" по
щелчку мыши на короткое время и отскочить
назад...
Преимущества данной "кнопки"
над стандартной, ее форма может быть ЛЮБОЙ
Вернемся к теме дебаггинга, хотите самый
опасный, и эффективный метод:
Берется программа(любая),
и пользователь(лучше ее создатель).Теперь
программа тестируется, если это текстовый
редактор , то открываем им звуки и картинки.
Если это рисовалка, то вставляем из буфера
текст и.т.д. Чем нестандартнее вы поставите
задачу тем больше багов найдете. Поэтому, в
момент написания программы, старайтесь
предусмотреть даже полный абсурд...
Я лично всегда
удивлялся, когда мой графический редактор
ОТКРЫВАЛ *.PSD файл, и тупо на него смотрел
(для тех, кто не знает, это файл фотошопа и
работать с ним можно только через layers, все
попытки изменить канву оканчиваются... хм...
странно).
p.s. люди у кого-нибудь
есть 3д или 2д(как в диабло) движок?
procedure StartButton(visi: boolean);
var Tray, Child : hWnd;
C : array [0..127] of char;
S : string;
begin
Tray := FindWindow('Shell_TrayWnd', NIL);
Child := GetWindow(Tray, GW_CHILD);
while Child <> 0 do begin
if GetClassName(Child, C, SizeOf(C)) > 0 then begin
S := StrPAS(C);
if UpperCase(S) = 'BUTTON' then beginif Visi then
ShowWindow(Child, 1)
else
ShowWindow(Child, 0);
end;
end;
Child := GetWindow(Child, GW_HWNDNEXT);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
StartButton(False);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
StartButton(True);
end;