DevProg: Блог для программистов

Секреты программирования. Примеры разработки. Обзоры программёрского софта, блогов и форумов и просто полезные советы!

Archive for Январь 2009

Delphi для начинающих. Урок 1 — Создание первой программы на Delphi

Posted by devprog на Январь 31, 2009

Итак, давайте сразу к делу. Я думаю все справились с установкой Delphi? Если нет – пишите в комментарии, будем разбираться.

Напишем программу, которая имеет форму и несколько элементов управления, которые могут взаимодействовать друг с другом.

Создайте новый проект (File | New | Application) – делфи создаст для вас новую, пустую форму.

Теперь перетащите на форму компоненту Memo c вкладки Standart. Поместите её куда хотите и растяните её как вам угодно.

Перетащите с панели компонент кнопку (Button) с вкладки Standart. Активизируйте её, кликнув по ней мышкой. Теперь нажмите F2, вы увидите, как окно Object Inspector станет активно. В этом окне мы можем изменять свойства компонентов, такие как например заголовок (Caption).

Измените у кнопки значение Caption с “Button1” на “Привет”.

Переходите на вкладку Events (события) и отыщите событие OnClick. Как вы поняли, OnClick генерируется когда мы нажимаем на кнопку. В поле, напротив надписи OnClick щёлкните 2 раза мышкой (mouse1) и делфи создаст процедуру-обработчик TForm1.Button1Click.

Впишите между begin и end следующий код:

ShowMessage(Memo1.Text);

Теперь осталось сохранить проект: File | Save Project As… сохраните его в отдельную папку – он нам пригодится на следующем уроке.

Сохранили? Теперь компилируем его! Project | Compile Project1 (или Ctrl+F9) и запустим (F9).

Нажмите на кнопку и посмотрите результат.

Домашнее задание:

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

Реклама

Posted in Школа Delphi | Отмечено: | 1 Comment »

Школа программирования на Delphi для новичков

Posted by devprog на Январь 31, 2009

Привет. Рад видеть тебя снова на блоге для программистов. Итак, сначала несколько новостей:

1) К нашей комманде присоеденился новый автор – Tevton. Отличный человек, специалист по БД и по языкам программирования. Автор множества статей по программированию и просто хороший человек, который готов помочь по мере своих возможностей.

2) Решено было открыть школу начинающих программистов на языке Delphi. Пока составляется план уроков и выбирается стиль повествования, вы можете подписаться на RSS новости, чтобы получать новые записи блога незамедлительно. Так же, вы можете получать RSS ленту на почту.

Posted in Delphi, Новичку | Leave a Comment »

Borland C++ Builder. Советы работы с формами.

Posted by devprog на Январь 29, 2009

Ещё один очень интересный FAQ! Все примеры можно легко перевести на Delphi. Но если вы испытываете трудности – милости просим, пишите – поможем.

Запрещение кнопки закрытия [X] формы

// Чтобы запретить кнопку закрытия формы, напишите следующий
// код (Form1- ваша форма, Button1 — кнопка на ней):
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HMENU MenuHandle = GetSystemMenu(Handle, false);
if(MenuHandle)
  DeleteMenu(MenuHandle, SC_CLOSE, MF_BYCOMMAND);
}

Запрещение кнопки максимизации [[]] формы

// Чтобы запретить кнопку максимизации формы, напишите
// следующий код (Form1- ваша форма, Button1 — кнопка на ней):
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HMENU MenuHandle = GetSystemMenu(Handle, false);
if(MenuHandle)
  DeleteMenu(MenuHandle, SC_MAXIMIZE, MF_BYCOMMAND);
}
// ПРИМЕЧАНИЕ: максимизация формы двойным щелчком мыши
// по заголовку также будет невозможна

Запрещение кнопки минимизации [_] формы

// Чтобы запретить кнопку минимизации формы, напишите
// следующий код (Form1- ваша форма, Button1 — кнопка на ней):
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HMENU MenuHandle = GetSystemMenu(Handle, false);
if(MenuHandle)
  DeleteMenu(MenuHandle, SC_MINIMIZE, MF_BYCOMMAND);
}

Отмена закрытия формы при нажатии Alt+F4

// Чтобы форма не закрывалась при нажатии комбинации клавиш
// Alt+F4, разместите на форме компонент TActionList(ActionList1),
// создайте новый TAction(Action1), и в свойстве ShortCut у Action1
// пропишите комбинацию клавиш Alt+F4, а обработчик события
// OnExecute должен выглядеть следующим образом
// (Form1- ваша форма):
void __fastcall TForm1::Action1Execute(TObject *Sender)
{
// чтобы при сохранении C++Builder не уничтожил обработчик
}

Отмена закрытия формы при нажатии Alt+F4 (Вариант 2)

//В обpаботчике FormKeyDown пишешь:
if (Shift.Contains(ssAlt)&&Key==VK_F4) Tag=1;

//В обpаботчике FormCloseQuery:
if(Tag)
{
CanClose=false;
Tag=0;
}

Перемещение формы мышью не за заголовок

// Напишите следующий обработчик события OnMouseDown формы
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
 long SC_DRAGMOVE = 0xF012;
 if(Button == mbLeft)
  {
  ReleaseCapture();
  SendMessage(Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0);
 }
}

Изменение размеров формы (развернуть и т.д.)

// Напишите следующий код:
Form1->WindowState = wsMaximized; // развернуть
Form1->WindowState = wsMinimized; // минимизировать
Form1->WindowState = wsNormal; // первоначальный размер

Как сделать кусок окна прозрачным

// Для того чтобы сделать кусок формы прозрачным,
// напишите следующий код:

//Прямоугольный кусок
HRGN R1=CreateRectRgn(0, 0, Width, Height);
HRGN R2=CreateRectRgn(4, 24, Width-4, Height-4);
CombineRgn(R1, R1,R2, RGN_DIFF);
SetWindowRgn(Handle, R1, TRUE);

//Кусок в виде элипса
HRGN hRgn1 = CreateRectRgn(0, 0, Width, Height);
HRGN hRgn2 = CreateEllipticRgn(0, 0, Width, Height);
HRGN hRgn3 = CreateRectRgn(0, 0, Width, Height);
CombineRgn(hRgn3, hRgn1, hRgn2, RGN_DIFF);
SetWindowRgn(Handle, hRgn3, TRUE);
//можно заменить hRgn3 на hRgn2

//Кусок в виде пятиугольника
HRGN Reg1, Reg2;
HRGN Region;
POINT p[5];
p[0] = Point(100, 0);
p[1] = Point(Width-100, 0);
p[2] = Point(Width, Height/2);
p[3] = Point(Width/2, Height);
p[4] = Point(0, Height/2);
Region = CreatePolygonRgn(p, 5, ALTERNATE);
SetWindowRgn(Handle, Region, true);

Создание новой формы во время работы программы

// Для того чтобы создать новую форму напишите:
// следующих код:

TForm * Formik= new TForm(this);
TButton* button=new TButton(Application);
button->Parent=Formik;
button->Caption=»New Button»;
button->Left=10;
button->Top=15;
button->Show();
Formik->Caption=123;
Formik->ShowModal();
delete Formik;

Как сделать прозрачную форму в W2K/XP

// Для того чтобы сделать прозрачную форму напишите:
int Transparency = 75;//насколько прозрачным будет окно (0-100%)
long ExtStyle = GetWindowLong(Handle, GWL_EXSTYLE);
SetWindowLong(Handle, GWL_EXSTYLE, ExtStyle | WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, 0 , (255 * Transparency) / 100,
LWA_ALPHA);

Прозрачное окно с реакцией на нажатия кнопок, панелей

// Для того чтобы создать форму напишите:
void __fastcall TForm1::Photo()
{
int X0,Y0;
bool Flag;
TRect ScreenRect;
TCanvas* ScreenCanvas=new TCanvas;
try
{
  Top=0;
  Left=Screen->Width;
  Width=Screen->Width;
  Height=Screen->Height;
  ScreenRect=Rect(0,0,Width,Height);
  ScreenCanvas->Handle=GetDC(0);
  Image1->Canvas->CopyRect(ScreenRect, ScreenCanvas,ScreenRect);
  ReleaseDC(Handle,ScreenCanvas->Handle);
  Left=Top;
} __finally
{
  delete ScreenCanvas;
}
}

Новая форма как отдельное окно

// Для того чтобы создать новую форму напишите:
void __fastcall TForm1::CreateParams(TCreateParams& Params)
{
TForm::CreateParams(Params);
Params.WndParent = 0;
}

Приложение без формы

Создайте новый проект. Дальше: Project->Remove from project

Определения класса окна определённого приложения

Для того чтобы определить класс определённого приложения напишите следующий код:

HWND hWnd=FindWindow(NULL,»Калькулятор»);//для русскоязычной Windows
if (hWnd)
{
char buff[100];
GetClassName(hWnd,buff,100);
ShowMessage(buff);
}
Автор: Srpj Сайт: http://srpj.narod.ru/

Как заполнить канву формы, фоном рабочего стола

// Напишите следующий код:
PaintDesktop(Form1->Canvas->Handle);

Posted in Новичку, С и С++ | 10 комментариев »

Узелок впрок! Как создать кнопку в режиме runtime, которая бы отображалась на компонетне ToolBar?

Posted by devprog на Январь 29, 2009

Мне пришло письмо от одного из моих читателей с вопросом о том, Как создать кнопку в режиме runtime, которая бы отображалась на компонетне ToolBar?

На самом деле сделать это очень даже просто:

 

 

• Киньте на форму компоненту TToolBar.

• Киньте на форму компоненту TButton.

• По событию OnClick у Button1 напишите следующий код:

procedure TForm1.Button1Click(Sender: TObject);
var NewBtn:TToolButton;
begin
NewBtn := TToolButton.Create(ToolBar1);
NewBtn.Caption := ‘RunTime Component!’;
NewBtn.OnClick := BtnClick;
ToolBar1.InsertControl(NewBtn);
end;

• Обьявите в поле Type, после procedure Button1Click(Sender: TObject); следующюю процедуру:

procedure BtnClick(Sender: TObject);

• Нажмите Ctrl+Shift+C (тем самым создав новую процедуру для обьявления)

• Напишите между begin и end следующий код:

ShowMessage(‘http://www.devprog.wordpress.com‘);

• Компилируйте проект и нажимайте на кнопку. Вы увидите, что в режиме runtime создаются новые кнопки типа TToolButton на панели ToolBar1, при нажатии на которые будет вызываться процедура BtnClick.

Вот вы и создали компонент в режиме runtime, который отображается на ToolBar. Всего хорошего.

 

 

Posted in Узелок впрок | 1 Comment »

Скоро ожидается пополнение авторов devprog.wordpress.com

Posted by devprog на Январь 29, 2009

Спешу сообщить вам приятное известие! К нам скоро присоединятся два автора! Это Helkern c форума www.xaker.name и r0cha! – мой очень хороший друг, без которого я наверное не продолжил бы писать в этот блог!

Оба они – хорошие специалисты, каждый в своём. Оба разбираются в программировании, и оба кстати шарят в хакинге. Оба – неординарные личности… Такие, что с ними хочется общаться всегда. Они никогда не напрягают, говорят всегда по делу. Короче, хорошие авторы и друзья. Всем желаю таких хороших и грамотных друзей.

Posted in Uncategorized | Leave a Comment »

Новые поступления в Библиотеку для программистов!

Posted by devprog на Январь 29, 2009

В Библиотеке для программистов новые книги!

Императивное программирование и ООП на Turbo Pascal и Delphi
Delphi — Быстрый старт
Советы по Delphi 1000 (Kuliba)
Введение в DELPHI

Всё это, и не только, вы сможете найти в разделе «Библиотека Программиста«

Posted in Delphi | Leave a Comment »

Нужно найти тот или иной компилятор? Да пожалуйста!

Posted by devprog на Январь 17, 2009

Бывают моменты, когда нужно быстренько, не копаясь в поисковиках выкачать какой либо компилятор. А может быть даже скачать компилятор совсем уж “иноземного языка”. По следующим ссылкам собраны базы из огромного колличества компиляторов на любой вкус. От Basic до brainfuck. Там вы найдёте любой компилятор, который вам нужен.

www.compilers.net

http://www.idiom.com/free-compilers/

http://www.iecc.com/compilers/

http://www.dunfield.com/downloads.htm

http://www.scriptol.org/

http://www.bloodshed.net/compilers/index.html

Hello World!

+ BONUS! Программа Hello World на всех языках программирования. >> http://www.roesler-ac.de/wolfram/hello.htm

 

Posted in Новичку, Программирование | Leave a Comment »