Магазин низких цен   Сотовые телефоны
  КПК / коммуникаторы
  В автомобиль Car Kit
  Bluetooth гарнитуры
  GPS навигация
  MP3 FM модуляторы
  Карты памяти
  USB флэшки
  MP3 плееры
  Аккумуляторы
  Multisim карты
  Адаптеры на 2 sim



  Reply to this topicStart new topicStart Poll

> Загружаем, выгружаем, печатаем..., Ответ на вопросы
Snaker
Отправлено: Mar 17 2006, 11:40 AM
Quote Post


Прикольный программёр
Group Icon

Группа: Администратор
Сообщений: 1499
Пользователь №: 12
Регистрация: 15-September 04
Награды: 10
Репутация: 37
Флудо: 6390
Зверинец: 2
Инвентарь: Посмотреть

Статус: Member Offline



В общем всё вот так. Только не пугайтесь я не собирался писать какую-то товарную прогу, просто отвечаю на заданный вопрос и поэтому минут за 5-10 накидал этот код. Ещё просьба не пишите мне на РМ, лучше создавайте топик и я постараюсь ответить на все возникшие вопросы, по мере сил, способностей и свободного времени.

Итак приступим:

Открываем в Дельфях новый проект. В свойствах формы прописываете:
Caption (что хотите, я например написал Супер-пупер,а можете и ничего не писать, и так будет работать по умолчанию среда сама пропишет там Form1)

Position – poScreenCenter (это чтоб ваша прога отображалась при запуску в центре экрана, это тоже можно не делать, но есть в программировании «Правила хорошего тона» Так что к таким вещам желательно привыкать с самого начала.

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

Далее кидаем на форму три компонента с закладки Dialogs

OpenDialog – в коде он получает имя OpenDialog1;
SaveDialog – SaveDialog1 и PrintDialog – PrintDialog1

Далее с закладки Win32 кидаем на форму RichEdit, можно любой другой типа Memo, но этот для наших целей на мой взгляд более удобен.

С закладки Standart кидаем четыре бутона они получают имена Button1, Button2 и т.д. В свойствсах Caption у первого пишем «Открыть» у второго «Сохранить» у третьего «Печать» ну и последнего «Выход». Размещаете всё это на форме как Вам вздумается или можете например как это сделал я.
user posted image

В событии onClick Button4 пишем

procedure TForm1.Button4Click(Sender: TObject);
begin
Form1.Close;
end;

Это будет кнопка закрытия приложения

У кнопки «Открыть»
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
Это будет кнопка Открытия файла и загрузки его содержимого в RichEdit, где его можно редактировать, изменять изи делать всё что вам вздумается.


У кнопки «Сохранить»
procedure TForm1.Button2Click(Sender: TObject);
begin
if SaveDialog1.Execute then RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
end;
Это будет кнопка сохранения содержимого RichEdit, в текстовой файл.


У кнопки «Печать»

procedure TForm1.Button3Click(Sender: TObject);
begin
if PrintDialog1.Execute then RichEdit1.Print(RichEdit1.Text);
end;

Ну и кнопка вывода на печать соответственно.

Так на с буттонами вроде бы закончили переходим к диалогам, в принципе этого можно и не делать, но Вы ж помните про «хороший тон»? Ась? Не помните… Хм… Ну и ладно я всё равно напишу авось кому-то пригодиться…

Выделяем на форме OpenDialog и в открывшихся в инспекторе обектов его свойствах пишем:
DefaulEx – txt
Title – Открытие файла
Счёлкаем по позиции Filter и в открывшемся окне редактирования отпределяем условия фильтрации при выборе файла, чтоб под ногами не болталось что не попадя, а лишь те текстовые файлы которые мы с Вами и собираемся открывать. FilterName - Tекстовые файлы Filter - *.txt

С SaveDialog поступаем точно так же с разницей лишь в том что в его Title пишем "Cохранение файла".

Ну и венцом творения пропишем в свойствах RichEdit ScrollBars – onBoth Это для того чтобы скролинги прокрутки появлялись по мере необходимости если загруженное содержание файла превышает размер RichEdit по строкам. Если этого не прописать то скролинги сами не появяться.

Ну вот и всё сохраняемся, компилируем проект и смело жмём СТАРТ на панели Дельфей, а если в ломы просто нажимаем F9 И получаем требуемый результат..

Ну вот в принципе и всё что я могу сказать по этому вопросу. Авторские права на эту ахинею я регистрировать не собираюсь так что ломайте, улудшайте переделывайте как вам вздумается… Вдруг у Вас из этого всего получиться офигительная прога,. Желаю удачи и всего самого-самого!


--------------------
...Программист - это уже не совсем человек, это уже на половину комп...
PMEmail Poster
Top
Изобретатель
Отправлено: Mar 17 2006, 01:21 PM
Quote Post


иЗЮБРИК
*****

Группа: Продвинутый пользователь
Сообщений: 426
Пользователь №: 616
Регистрация: 3-August 05
Награды: 0
Репутация: 6
Флудо: 31554
Зверинец: 0
Инвентарь: Посмотреть
Армия: 103

Статус: Member Offline



Ой огромное пасибо! Ничего если я буду тут коекакие вопросики задавать????(нечасто)
PMEmail PosterMSN
Top
Изобретатель
Отправлено: Mar 17 2006, 02:17 PM
Quote Post


иЗЮБРИК
*****

Группа: Продвинутый пользователь
Сообщений: 426
Пользователь №: 616
Регистрация: 3-August 05
Награды: 0
Репутация: 6
Флудо: 31554
Зверинец: 0
Инвентарь: Посмотреть
Армия: 103

Статус: Member Offline



все получилось токо вот такая проблемс- после того как я напишу if PrintDialog1.Execute then Memo1.Print(Memo1.Text);
(я редактор использовал мемо) он выдает снизу:
Unit.pas(54):Undeclared identifier:'Print'
и ставит палочку печати вот так:
Memo1.Print|(Memo1.Text);
что за байда?
PMEmail PosterMSN
Top
Snaker
Отправлено: Mar 17 2006, 06:28 PM
Quote Post


Прикольный программёр
Group Icon

Группа: Администратор
Сообщений: 1499
Пользователь №: 12
Регистрация: 15-September 04
Награды: 10
Репутация: 37
Флудо: 6390
Зверинец: 2
Инвентарь: Посмотреть

Статус: Member Offline



Задавай любые вопросы, чем смогу, тем помогу... Ну эт просто... Я специально и взял для этой цели компонет RichEdit так как у него есть метод Print позволяющий выводить на печать у Memo такого метода нет... от туда и ошибка... если выводить на печать что-то из Memo то надо самому писать процедуру вывода на печать. Если надо то я могу написать примерный код для реализации этого процесса. То есть в этом случае программеру приходиться самому ломать голову как это сделать, не пользуясь заложеными в среду функциями и методами. Вот ты уже и столкнулся с недоработанностью Дельфей.. biggrin.gif


--------------------
...Программист - это уже не совсем человек, это уже на половину комп...
PMEmail Poster
Top
Изобретатель
Отправлено: Mar 17 2006, 06:37 PM
Quote Post


иЗЮБРИК
*****

Группа: Продвинутый пользователь
Сообщений: 426
Пользователь №: 616
Регистрация: 3-August 05
Награды: 0
Репутация: 6
Флудо: 31554
Зверинец: 0
Инвентарь: Посмотреть
Армия: 103

Статус: Member Offline



нда...понятно!
PMEmail PosterMSN
Top
Изобретатель
Отправлено: Mar 17 2006, 06:38 PM
Quote Post


иЗЮБРИК
*****

Группа: Продвинутый пользователь
Сообщений: 426
Пользователь №: 616
Регистрация: 3-August 05
Награды: 0
Репутация: 6
Флудо: 31554
Зверинец: 0
Инвентарь: Посмотреть
Армия: 103

Статус: Member Offline



а в чём разница тогда мемо и рич-едит??? тогда нафиг этот мемо??
PMEmail PosterMSN
Top
Изобретатель
Отправлено: Mar 17 2006, 06:42 PM
Quote Post


иЗЮБРИК
*****

Группа: Продвинутый пользователь
Сообщений: 426
Пользователь №: 616
Регистрация: 3-August 05
Награды: 0
Репутация: 6
Флудо: 31554
Зверинец: 0
Инвентарь: Посмотреть
Армия: 103

Статус: Member Offline



биг спасибо! всё работает wink.gif
если ещё нетрудно напиши текст для FontDialog я чёт пытался сделать по прошлым примерам ничерта...
PMEmail PosterMSN
Top
Snaker
Отправлено: Mar 21 2006, 04:41 AM
Quote Post


Прикольный программёр
Group Icon

Группа: Администратор
Сообщений: 1499
Пользователь №: 12
Регистрация: 15-September 04
Награды: 10
Репутация: 37
Флудо: 6390
Зверинец: 2
Инвентарь: Посмотреть

Статус: Member Offline



QUOTE (Изобретатель @ Mar 17 2006, 06:38 PM)
а в чём разница тогда мемо и рич-едит??? тогда нафиг этот мемо??

Разница вобщем-то большая. Memo это типа обыкновенной строки ввода Edit, но с возможностью загружать в него текст длинной более 256 знаков, редактироваль его и выгружать/загружать во внешний файл. Это если по большому счёту. Так как на самом деле у Memo и Edit намного больше различий и методов.

RichEdit - это готовая заготовка для полноценного текстового редактора. Если сохранить из его текст по внешний текстовой файл и потом открыть этот текстовик например стандартным блокнотом, то можно увидеть что в тексте не только то что ты сохранил, а ещё есть кое-что. Это теги форматирования текста. То есть перенос сторок и т.д. и т.п. Как например в документах RTF или DOC.

По этому если тебе надо писать прогу умеющую работать с текстом то надо использовать RichEdit, так как многие функции текстового редактора в нём уже заложены.

А если просто нужно текстовое поле с указаными мною выше возможностями, то лучше использовать Memo. Вот и все дела. По большому счёту.


--------------------
...Программист - это уже не совсем человек, это уже на половину комп...
PMEmail Poster
Top
Snaker
Отправлено: Mar 21 2006, 05:45 AM
Quote Post


Прикольный программёр
Group Icon

Группа: Администратор
Сообщений: 1499
Пользователь №: 12
Регистрация: 15-September 04
Награды: 10
Репутация: 37
Флудо: 6390
Зверинец: 2
Инвентарь: Посмотреть

Статус: Member Offline



QUOTE (Изобретатель @ Mar 17 2006, 06:42 PM)
биг спасибо! всё работает wink.gif
если ещё нетрудно напиши текст для FontDialog я чёт пытался сделать по прошлым примерам ничерта...

Добавляем на форму ещё один Баттон, то есть Button5, даём ему имя "Шрифт" и в его обработчике пишем, чтоб всё выглядело примерно этак вот:

procedure TForm1.Button5Click(Sender: TObject);
begin
if FontDialog1.Execute then
begin
RichEdit1.Font.Name:=FontDialog1.Font.Name;
RichEdit1.Font.Size:=FontDialog1.Font.Size;
RichEdit1.Font.Style:=FontDialog1.Font.Style;
RichEdit1.Font.Color:=FontDialog1.Font.Color;
end;
RichEdit1.Repaint;
end;

С закладки VCL Dialog сбрасываем на форму компонент FontDialog, он в коде получает имя FontDialog1

Так4же можно добавить ещё одну кнопку Button6 "Очистить", для того чтобы можно было одним нажатием очищать RichEdit от текста в обработчике пишем:

procedure TForm1.Button6Click(Sender: TObject);
begin
RichEdit1.Clear;
RichEdit1.Repaint;
end;

Предупреждаю! Это будет работать ДЛЯ ВСЕГО текста находящегося в RichEdit Для того чтобы изменять параметры отдельного фрагмента текста (выделенного) не задевая оставшийся текст надо работать с другими методами. То есть проверить не выделен ли некий фрагмент текста если нет, то применять параметры глобально. Как я уже показал. А если есть выделение, то применять параметры только к выделенному фрагменту.


--------------------
...Программист - это уже не совсем человек, это уже на половину комп...
PMEmail Poster
Top
SN@IPER
Отправлено: Apr 6 2007, 03:28 PM
Quote Post


Unregistered














rolleyes.gif подскажите


как сделать загрузку DBF файла
и выполнить проверку на правельность заполненых полей


cry2.gif плиззз
Top
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Topic Options Reply to this topicStart new topicStart Poll

 

Альтернативный вариант форума, текстовая версия

Rambler's Top100 Яндекс цитирования