четверг, 5 мая 2011 г.

Редактор для создания сайтов (HTML+CSS+JavaScript; PHP+MySQL) часть1. Создание вкладок

 приступим к процессу написания программы.
сначала создадим новый проект , сохраним его, и приступим к размещению элементов, разместим на нем из стандартной палитры компонентов:
PageControl, PopupMenu, MainMenu.


Теперь подредактируем свойства компонентов, начнем с MainMenu, с помощью него создадим верхнее меню пока только что бы его было видно, для этого достаточно сделать один пункт "Меню".
Компоненту PageControl зададим свойство Align=alClient, в свойство PopupMenu выберем PopupMenu1.
У компонента PopupMenu создадим два пункта : "Закрыть документ" и "Новый документ".
свойства name этих пунктов зададим соответственно "Закрыть документ"-deldoc, "Новый документ"-newdoc
Вид формы должен получиться примерно такой:

В поле переменных программы добавим несколько переменных:
tabs-это наши вкладки;
ndoc-счетчик наших документов;
получим вот такой вид области переменных программы;

var
  Form1: TForm1;
  tabs:TTabSheet;
  ndoc:Integer;

Далее напишем обработку события при клике на пункт выпадающего меню "Новый документ":

procedure TForm1.newdocClick(Sender: TObject);
begin
ndoc:=ndoc+1;
tabs:=ttabsheet.Create(pagecontrol1);
tabs.PageControl:=pagecontrol1;
tabs.Caption:='Документ'+inttostr(ndoc);
end;

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

procedure TForm1.FormCreate(Sender: TObject);
begin
ndoc:=ndoc+1;
tabs:=ttabsheet.Create(pagecontrol1);
tabs.PageControl:=pagecontrol1;
tabs.Caption:='Документ'+inttostr(ndoc);
end;

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

Теперь напишем обработку события закрытия документа:

procedure TForm1.deldocClick(Sender: TObject);
begin
tabs.PageControl.ActivePage.Free;
end;

В следующий раз напишу как динамически создавать на вкладке компоненты и доработаем событие закрытия вкладки и документа на нем.

Исходники на эту запись

понедельник, 2 мая 2011 г.

Редактор для создания сайтов (HTML+CSS+JavaScript; PHP+MySQL)

И так данная статья и другие статьи по этой теме будут написаны на одну и туже тему- создание редактора для самостоятельного создания сайтов.
Предыдущий редактор считаю началом будем считать его версией 1.0, данный же редактор будет много совершение планирую сделать неполный аналог WDS.
Редактор будет в ключать в себя такие возможности:
- возможность работы с несколькими документами;
- файл менеджер для добавления в папку проекта дополнительного содержимого(картинки, аудио и видео);
- подсветка синтаксиса PHP,MySQL,HTML,CSS,JavaScript
- просмотр созданной HTML страницы в встроенном браузере
- другие вспомогательные элементы для создания страниц сайта.

суббота, 30 апреля 2011 г.

Какую программу написать???

Какую программу написать? таким вопросом задается каждый начинающий программист. ответ на него достаточно расплывчатый так как писать можно любую программу, идей вокруг очень много, что даже сам вопрос становится странным, но все таки он есть, и на него надо как то ответить, и я попробую это сделать.
В общем программ, которые вы можете написать довольно много, но не все они привлекают своей "сложностью". И так первое что приходит это написать бесплатную программу аналог платной с теми же возможностями или хотя бы с большей их частью. Второе что приходит в голову спросить у друзей что им не хватает, и написать программу специально для них или предложить свои услуги на каком нибудь форуме за спасибо, и люди обязательно подкинут вам идею.
Вот в общем кратко два осн7овных ответа на вопрос.

четверг, 28 апреля 2011 г.

Программа подсчета символов в тексте

Программа подсчета символов в тексте

  Решил написать программку для подсчитывания количества знаков в тексте, она будет работать следующим образом: загружаем текст в программу вводим символ, колличесво которого в тексте нам необходимо узнать.
Для этого на форме размещаем компоненты Memo, OpenDialog, Edit, два компонента Button, Label, далее зададим название двум кнопкам, первая - «Загрузить», вторая – «Подсчитать» , у компонентов Memo и Edit убираем стандартный текст, а у компонента Label стираем текст в поле Caption.
Получаем примерно такой вид формы:


  Далее пишем код  программы , сначала событие клика по кнопке «Загрузить»
Здесь мы будем загружать текст в компонент Memo с помощью компонента OpenDialog.

Код загрузки текста в Memo:

procedure TForm1.Button1Click(Sender: TObject);
begin
with opendialog1 do
begin
if opendialog1.Execute then
begin
memo1.Lines.LoadFromFile(filename);
end;
end;
end;

Код обработки нажатия на кнопку подсчитать состоит из следующих этапов:
  1. узнаем длину текста
  2. перебираем текст по букве и подсчитываем количество введенной нами буквы
  3. выводим сообщение о количестве содержания введенной нами буквы в тексте
Перебор будем  осуществлять с помощью цикла fortodo и цикла ifthen
И функции Copy:

Функция Copy(s,n,i) возвращает подстроку длинной  « i » ( тип integer ) начиная с позиции « n » ( ип integer ) строки « s » ( тип string )

Код клика по кнопке «Подсчитать»:

procedure TForm1.Button2Click(Sender: TObject);
var
len,i,s:integer;
begin
len:=length(memo1.Text);
s:=0;
for i:=1 to len do
begin
if copy(memo1.Text,i,1)=edit1.Text then
begin
s:=s+1;
end;
end;
 label1.Caption:= 'текст содержит '+inttostr(s)+' символов '+edit1.Text;
end;

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

вторник, 26 апреля 2011 г.

Простой HTML редактор для создания веб сайтов

Решил написать HTML редактор для создания сайтов. Простенький чисто что бы писать в ручную как на блокноте, но просмотр в одной программе .
Редактор  будет иметь подсветку кода, просмотр страницы, сохранение и открытие документов,. И так приступим, первое это скачаем и установим компоненты SynEdit и Embedded Web Browser.
Скачав и установив компоненты приступим к  созданию приложения, первое что сделаем это разместим на форме компонент MainMenu, TabControl, на него разместим два компонент SynMemo и компоненты SynHtmlSyn и SynCssSyn, компонент Embedded Web Browser, компоненты OpenDialog и SaveDialog и полдучим примерно вот такой вид:
У компонента TabControl создадим вкладки “Редактор HTML”, “Редактор CSS”, “Просмотр EI”, у компонентов SynMemo и Embedded Web Browser свойство Align поставим значение Client. Форма будет выглядить так:


Ну и начнем писать код программы, первое напишем обработку загрузки формы и переключения вкладок и просмотра страницы:

procedure TForm1.FormCreate(Sender: TObject);
begin
with tabcontrol1 do
begin
synmemo1.Visible:=tabindex=0;
synmemo2.Visible:=tabindex=1;
embeddedwb1.Visible:=tabindex=2;
end;
end;
procedure TForm1.TabControl1Change(Sender: TObject);
begin
with tabcontrol1 do
begin
synmemo1.Visible:=tabindex=0;
synmemo2.Visible:=tabindex=1;
embeddedwb1.Visible:=tabindex=2;
end;
synmemo1.Lines.SaveToFile(extractfilepath(application.ExeName)+'index.html');
synmemo2.Lines.SaveToFile(extractfilepath(application.ExeName)+'style.css');
embeddedwb1.Navigate(extractfilepath(application.ExeName)+'index.html');
end;

Теперь отредактируем компонент MainMenu, то есть создадим меню нашего редактора, добавим туда два пункта Это: Меню под меню Новый, Открыть, Сохранить, Выход, и второй пункт Правка , в которой разместим под меню Назад, Вырезать, Копировать, Вставить. И напишим код обработки каждого из пунктов:

Меню| Новый

procedure TForm1.N2Click(Sender: TObject);
begin
if tabcontrol1.TabIndex=0 then
begin
synmemo1.Text:='';
end;
if tabcontrol1.TabIndex=1 then
begin
synmemo2.Text:='';
end;
end;

Меню| Открыть

procedure TForm1.N3Click(Sender: TObject);
begin
if tabcontrol1.TabIndex=0 then
begin
with opendialog1 do
begin
if opendialog1.Execute then
begin
synmemo1.Lines.LoadFromFile(filename);
end;
end;
end;
if tabcontrol1.TabIndex=1 then
begin
with opendialog2 do
begin
if opendialog2.Execute then
begin
synmemo2.Lines.LoadFromFile(filename);
end;
end;
end;
end;

Меню|Сохранить

procedure TForm1.N4Click(Sender: TObject);
begin
if tabcontrol1.TabIndex=0 then
begin
with savedialog1 do
begin
if savedialog1.Execute then
begin
synmemo1.Lines.SaveToFile(savedialog1.FileName+filter);
end;
end;
end;
if tabcontrol1.TabIndex=1 then
begin
with savedialog2 do
begin
if savedialog2.Execute then
begin
synmemo2.Lines.SaveToFile(filename+filter);
end;
end;
end;
end;

Меню|Выход

procedure TForm1.N5Click(Sender: TObject);
begin
close;
end;

Правка|Назад

procedure TForm1.N10Click(Sender: TObject);
begin
if tabcontrol1.TabIndex=0 then
begin
synmemo1.Undo;
end;
if tabcontrol1.TabIndex=1 then
begin
synmemo2.Undo;
end;
end;

Правка|Вырезать

procedure TForm1.N7Click(Sender: TObject);
begin
if tabcontrol1.TabIndex=0 then
begin
synmemo1.SelText;
synmemo1.CutToClipboard;
end;
if tabcontrol1.TabIndex=1 then
begin
synmemo2.SelText;
synmemo2.CutToClipboard;
end;
end;


Меню|Копировать

procedure TForm1.N8Click(Sender: TObject);
begin
if tabcontrol1.TabIndex=0 then
begin
synmemo1.SelText;
synmemo1.CopyToClipboard;
end;
if tabcontrol1.TabIndex=1 then
begin
synmemo2.SelText;
synmemo2.CopyToClipboard;
end;
end;

Меню|Вставить

procedure TForm1.N9Click(Sender: TObject);
begin
if tabcontrol1.TabIndex=0 then
begin
synmemo1.PasteFromClipboard;
end;
if tabcontrol1.TabIndex=1 then
begin
synmemo2.PasteFromClipboard;
end;
end;

Вот и все наш редактор сайтов готов, все нужные вам другие дополнительные функции вы сможете реализовать сами, исходники программы прилагаются.

Р.S по просьбе добавлю новые возможности.