Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 673
от 08.12.2006, 02:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 411, Экспертов: 64
В номере:Вопросов: 3, Ответов: 11


Вопрос № 65199: Доброго времени суток! Решил попробовать сохранять настройки окна в *.ini файле. С Integer, String параметрами проблем не возникает. Но когда столкнулся с тем, как сохранить, например свойство Align то попал в тупик, в коем прибываю и по ныне. Подска...
Вопрос № 65225: Здраствуйте, я хотела бы узнать как можно создать отчет на Excel-е. Я уже сделала так чтоб открылась книга, но как можно ввести в ячейки какие-нибудь данные....
Вопрос № 65272: Помогите мне пожалуйста тут мне одна задачка никак не подаеться... Отсортировать массив из 10 целых чисел по возрастанию следующим методом: a. Сравниваем первые два числа. Если первое больше второго – меняем их местами. b. Сравниваем перв...

Вопрос № 65.199
Доброго времени суток! Решил попробовать сохранять настройки окна в *.ini файле. С Integer, String параметрами проблем не возникает. Но когда столкнулся с тем, как сохранить, например свойство Align то попал в тупик, в коем прибываю и по ныне. Подскажите,пожайлуста, зажгите свет в конце тунеля.
Спасибо.
Отправлен: 02.12.2006, 09:41
Вопрос задал: Wictor (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Wictor!
Судя по хелпу, Align состоит из:
TAlign = (alNone, alTop, alBottom, alLeft, alRight, alClient, alCustom);
Каждый подобный набор начинается с 0, потом 1, 2 и так далее. Так что в свой INI-файл Вы должны сохранять значение типа Integer.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 02.12.2006, 10:06

Отвечает: monah
Здравствуйте, Wictor!
Добавлю к почти полному ответу sir henry, что значение надо привести к типу integer. integer(Align)

Приложение:

---------
festina lente

Ответ отправил: monah (статус: Студент)
Ответ отправлен: 02.12.2006, 18:35

Отвечает: Gh0stik
Здравствуйте, Wictor!

Приведу пример реализации данной задачи:

Процедура которая сохраняет значение Align объекта RadioGroup1 в INI-файл:

procedure TForm1.ButSaveClick(Sender: TObject);
var iniF:tinifile;
begin
iniF:=TIniFile.Create(ExtractFileDir(Application.ExeName)+'options.ini');
with iniF do
begin
WriteInteger('options','RadioGroup_Align',ord(RadioGroup1.Align));
Free;
end;
end;


Процедура, которая читает значение Align объекта RadioGroup1 из INI-файла:

procedure TForm1.ButLoadClick(Sender: TObject);
var iniF:tinifile;
begin
iniF:=TIniFile.Create(ExtractFileDir(Application.ExeName)+'options.ini');
with iniF do
begin RadioGroup1.Align:=Talign(ReadInteger('options','RadioGroup_Align',ord(RadioGroup1.Align)));
Free;
end;
end;


Так же прикрепляю к ответу архив с исходным кодом, с более широкими возможностями.....

Good Luck!!!

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Практикант)
Ответ отправлен: 04.12.2006, 16:47


Вопрос № 65.225
Здраствуйте, я хотела бы узнать как можно создать отчет на Excel-е. Я уже сделала так чтоб открылась книга, но как можно ввести в ячейки какие-нибудь данные.
Отправлен: 02.12.2006, 14:26
Вопрос задал: Almusha (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Алтунин Василий Владимирович
Здравствуйте, Almusha!
http://www.softok.org/coding/othyap/11634prog.html вот тут пример работы с Word, а тут с Excel http://www.sql.ru/faq/faq_topic.aspx?fid=310 и вот еще http://articles.org.ru/cfaq/index.php?qid=1793&frommostrecent=yes
Ответ отправил: Алтунин Василий Владимирович (статус: 2-ой класс)
Ответ отправлен: 03.12.2006, 02:59

Отвечает: Мишин Михаил
Здравствуйте, Almusha!
В приложении пример вывода в Excel данных из БД.

Дополнительно можно еще форматировать
параметры ячеек:
//Устанавливаем ширину колонок
Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Columns;
Colum.Columns[1].ColumnWidth:=5;
Colum.Columns[2].ColumnWidth:=10;
Colum.Columns[3].ColumnWidth:=20;
Colum.Columns[4].ColumnWidth:=30;
Colum.Columns[5].ColumnWidth:=20;

//Устанавливаем параметры шрифта для строк
Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Rows;
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=clBlue;
Colum.Rows[1].Font.Size:=14;

Приложение:

Ответ отправил: Мишин Михаил (статус: 1-ый класс)
Ответ отправлен: 03.12.2006, 12:18
Оценка за ответ: 5
Комментарий оценки:
Спасибо вам большое!

Отвечает: PaVeL_Ekt
Здравствуйте, Almusha!

используем TExcelApplication со вкладки Servers

xl.Visible[lcid(0)]:=true; // делаем, чтобы ексель был видимым
xl.Workbooks.Add(null,lcid(0)); //добавляем новый лист
xl.Range['A1',emptyparam].Value:='Привет'; //Добавляем значение в ячейку A1
xl.Range['A1','E1'].Value:='Привет'; //добюавляем значения в диапозон A1-E1

For i:=0 to listbox1.Count do
xl.range['A'+inttostr(i),emptyparam].value:=listbox1.items.strings[i]; // добавляем в каждую новую ячейку A значение из листбокса.

---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 7-ой класс)
Ответ отправлен: 04.12.2006, 09:46
Оценка за ответ: 5


Вопрос № 65.272
Помогите мне пожалуйста тут мне одна задачка никак не подаеться...
Отсортировать массив из 10 целых чисел по возрастанию следующим методом:
a. Сравниваем первые два числа. Если первое больше второго – меняем их местами.
b. Сравниваем первое и третье числа. Если первое больше третьего – меняем их местами
c. И так далее. После этого сравниваем второе с третьим, второе с четвертым… Ну и так до конца. В самом конце мы должны сравнить 9-е и 10-е числа.
Отправлен: 02.12.2006, 18:28
Вопрос задал: Тесленко Максим Юревич (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: monah
Здравствуйте, Тесленко Максим Юревич!
Вообще то это делается в любом цикле . for от 0 до количества элементов - 1, repeat и while, проверяйте булеву переменную которой присваивате true или false, в зависимости от того были на данной интерации перестановки или нет. При второй интерации нет смысла начинать проверку со второго элемента. Ведь если минимальное значение было последним, оно станет предпоследним... Вам понадобится вложеный цикл осуществляющий проверку между mass[i] и mass[i+1]
---------
festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 02.12.2006, 18:49

Отвечает: din
Здравствуйте, Тесленко Максим Юревич!
Глобальная переменная
var
ArrayOfInteger: array[1..10] of Integer = (22,3,15,16,14,14,15,17,18,10);
или реализовываете механизм заполнения массива и объявляете переменную внутри процедуры.
В приложени код самой процедуры, не самы быстрый способ, но задача решается.

Приложение:

---------
Есть только одно зло - невежество, и только одно благо - знания

Ответ отправил: din (статус: Практикант)
Ответ отправлен: 02.12.2006, 18:53

Отвечает: Писарев, Павел, Юрьевич
Здравствуйте, Тесленко Максим Юревич!
В приложении приведен пример программы

Приложение:

Ответ отправил: Писарев, Павел, Юрьевич (статус: 2-ой класс)
Ответ отправлен: 02.12.2006, 21:14

Отвечает: KiberZero
Здравствуйте, Тесленко Максим Юревич!

Вот, пожалуйста! Проверил, работает!

var
Form1: TForm1;
a:mas;
n:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i,k,x:integer;
begin
n:=Memo1.Lines.Count;//Определяем количество заполненных строк
for i:=1 to n do
begin
a[i]:=StrToInt(Memo1.Lines[i-1]);//Заполняем массив
end;
i:=0;
while i<=n-1 do
begin
k:=0;
while k<=n-2 do
begin
if a[k]<a[k+1] then
begin
x:=a[k+1];//заносим в буфер обмена
a[k+1]:=a[k];
a[k]:=x;//меняем местами
k:=k+1;
end;
k:=k+1;
end;
i:=i+1;
end;
end;
Удачи в программировании!
Ответ отправил: KiberZero (статус: 3-ий класс)
Ответ отправлен: 04.12.2006, 00:07

Отвечает: PaVeL_Ekt
Здравствуйте, Тесленко Максим Юревич!

в добавление к ответу Сухомлина Кирилла Владимировича

объявите глобальный массив и заполните
Вынесите в отдельную процедуру не сами числа, а номер массива
например

procedure CheckAndChange (var itm:integer);
var tmp:integer;
begin
if arrayOfInteger[itm]>arrayOfInteger[itm+1] then
tmp:=arrayOfInteger[itm+1];
arrayOfInteger[itm+1]:=arrayOfInteger[itm];
arrayOfInteger[itm]:=tmp;
end;

это процедура вместе с проверкой или же

Procedure Change (var itm:integer);
var tmp:integer;
begin
arrayOfInteger[itm+1]:=arrayOfInteger[itm];
arrayOfInteger[itm]:=tmp;
end;

---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 7-ой класс)
Ответ отправлен: 04.12.2006, 09:16


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное