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

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


Информационный Канал Subscribe.Ru

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

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

Выпуск № 155
от 17.06.2005, 18:50

Администратор:Калашников О.А.
В номере:Вопросов: 3, Ответов: 12


Вопрос № 22059: Уважаемые эксперты! Возможно ли в принципе поменять шрифт у Caption основной формы, а так же шрифт в основном меню основной же формы? Спасибо....
Вопрос № 22082: Здравствуйте эксперты! 1. Помогите ссылкой или советом, как работать с базами Access в Delphi. 2. Создаю в SQL Explorer новый альяс MSACCESS1, устанавливаю конфигурацию. Когда при открытии выдает сообщение: General SQL error. -214722...
Вопрос № 22086: Здравствуйте эксперты! В продолжение вопроса 22082 При попытке подключения (в компоненте ADOConnection) к базе mdb выдается сообщение: Error Системная база данных отсутствует или открыта с монопольным доступом другим пользователем.<br...

Вопрос № 22.059
Уважаемые эксперты! Возможно ли в принципе поменять шрифт
у Caption основной формы, а так же шрифт в основном меню
основной же формы? Спасибо.
Отправлен: 11.06.2005, 19:50
Вопрос задал: Рахматуллаев Адхам (статус: Посетитель)
Всего ответов отправлено: 6

Отвечает: Denisss
Здравствуйте, Рахматуллаев Адхам!
Просто взять и поменять шрифт у Вас не получится, но Вы можете сделать Form.Caption:= ''; (т.е. пустым), а текст рисовать самостоятельно.
Ответ отправил: Denisss (статус: 5-ый класс)
Отправлен: 11.06.2005, 20:30

Отвечает: newinfo2005
Здравствуйте, Adham!
Конечно можно!!
Я это делал через свойство Font у главной формы , а вот основного меню я не пробовал,попробуй
может должно это сделаться.
---------
Теряет тот , кто недвижется вперёд!!!
Ответ отправил: newinfo2005 (статус: 2-ой класс)
Отправлен: 12.06.2005, 00:04

Отвечает: Jadd
Здравствуйте, Adham!
Не знаю насчет заголовка окна (есть компоненты, которые делают это, но не помню какие ..вроде RxLib делает это), но в меню все просто. Возьми и унаследую от этого меню и введи свойство, которое будет задавать фонт меню. А еще круче - посмотри исходники TMenu и напиши на их основе свое. Все что нужно там, в методе Paint учесть свойство Font введеное тобой.
---------
Hakuna matata
Ответ отправил: Jadd (статус: 9-ый класс)
Отправлен: 12.06.2005, 01:13

Отвечает: Ерёмин Андрей
Здравствуйте, Adham!
Попробуйте изменять свойство Font самой формы.
Ответ отправил: Ерёмин Андрей (статус: 7-ой класс)
Отправлен: 12.06.2005, 08:24

Отвечает: Pushkin
Здравствуйте, Adham!
1. Как рекомендует Denisss свойство Caption := ' ', а вобработчике события OnPaint формы пишем что-то типа:
procedure TForm1.FormPaint(Sender: TObject);
var
c: TCanvas;
begin
c := TCanvas.Create;
c.Brush.Style := bsClear;
c.Font.Color := clWhite;
c.Font.Name := 'Times';
c.Font.Style := [fsBold];
c.Handle := GetDC(GetWindow(GetDesktopWindow, GW_OWNER));
c.TextOut(Left+26, Top+6, 'Form1');
c.Free;
end;
2. Свойство меню MainMenu1.OwnerDraw := True;
В обработчике события DrawItem для объекта MenuItem1 пишем например это:
procedure TForm1.MenuItem11DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
var
s: String;
begin
ACanvas.Brush.Color := clWhite;
ACanvas.FillRect(ARect);
ACanvas.Rectangle(ARect.Left,ARect.Top,ARect.Right,ARect.Bottom);
if Selected then ACanvas.Font.Style := [fsItalic];
s := MenuItem11.Caption;
s := copy(s,1,pos('&',s)-1)+copy(s,pos('&',s)+1,length(s)-1);
ACanvas.TextOut(ARect.Left+4,ARect.Top+2,s);
end;
Ответ отправил: Pushkin (статус: 4-ый класс)
Отправлен: 12.06.2005, 09:42
Оценка за ответ: 5
Комментарий оценки:
Спасибо, все подошло.

Отвечает: sir henry
Здравствуйте, Adham!
А у Вас есть определенные сомнения по этому поводу? :)
Не бойтесь - меняйте, смелость города берет. :)
Правда, если Вы не хотите лазить в свойства экрана, то это сделать довольно муторно - нужно самому перерисовывать окно. Вот ссылка на пример:
http://www.megalib.com/books/478/1333.htm
Через реестр это сделать проще:
HKEY_CURRENT_USER\Control panel\Desktop\WindowMetrics
Здесь параметры окна.
Только параметры эти заданы в двоичном виде ( в том числе шрифт окна и шрифт меню). Можно поэкспериментировать в свойствах экрана-оформление и посмотреть, какому шрифту какое значение соответствует.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 13.06.2005, 05:51


Вопрос № 22.082
Здравствуйте эксперты!
1. Помогите ссылкой или советом, как работать с базами Access в Delphi.
2. Создаю в SQL Explorer новый альяс MSACCESS1, устанавливаю конфигурацию. Когда при открытии выдает сообщение:
General SQL error.
-2147221164
Table
Alias: MSACCESS1
Что это может быть?
База создана в Access 97
3. Как работать с базами Access с помощью ADO.
Спасибо.
Отправлен: 12.06.2005, 12:49
Вопрос задал: Pushkin (статус: 4-ый класс)
Всего ответов отправлено: 4

Отвечает: Володимир
Здравствуйте, Pushkin!
1. Подключаться к базам данных Access через компоненты палитры ADO.
2. Проблем не будет при использовании ADO (иначе пишите снова).
3. Можно научиться практически пробуя - метод научного тыка (сложностей мало).
Теоретический материал есть в учебниках по Delphi, ссылки на них есть в
предыдущих вопросах рассылки. К сожалению, я не помню ссылок.
С уважением, Wolfstar.
Ответ отправил: Володимир (статус: 1-ый класс)
Отправлен: 12.06.2005, 13:10
Оценка за ответ: 3
Комментарий оценки:
1. Это я и сам знаю.
2. Надеюсь.
3. Метод тыка слишком долгий
Я тоже не помню ссылок.
ЗЫ. Лучше бы вообще не отвечал, Wolfstar

Отвечает: Jadd
Здравствуйте, Pushkin!
3) Все очень просто. Берем TADOConnect. В свойстве ConnectionString щелкаем на кнопке и выбираем кнопку Build. Дальше шагаем по опциям диалога, который строит строку для подключения через службу OleDB. После этого можно работать. Единственно, перед подключением к базе, я бы сделал возможность изменять путь к базе. А для этого мы берем сгенерированный стринг и копируем его содержимое в каку-то константу. Констант получится две, т.к. мы сотрем путь к базе в этой строке и будем подставлять сами из наших настроек (реестра, относительного пути и тп). Код может выглядеть так:
var
path: String;
exeName: String;
connstr: String;
connstr1: String;
begin
connstr := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
connstr1 := ';Mode=ReadWrite;Persist Security Info=False';
path := LowerCase(Application.ExeName);
exeName := LowerCase('MyExe.exe');
Delete(path, Pos(exeName, path), Length(exeName));
path := path + 'dbmydb.mdb';
ADOConnection1.ConnectionString := connstr + path + connstr1;
ADOConnection1.Connected := true;
end;
Таким образом мы получаем путь к базе относительно пути приложения, составляем строку и коннектимся к базе. Этот путь можно сохранять в реестре, можно задавать иным способом, но я решил не привязываться больше ни к чему, кроме как к пути относительно главной программы. Дальше, мы кидаем на форму TADOTable и в свойстве Connection выбираем TADOConnection, которое мы настраивали в коде и работаем как с обычным потомком TDataSet.пиши, коли чего. Удачи.
---------
Hakuna matata
Ответ отправил: Jadd (статус: 9-ый класс)
Отправлен: 12.06.2005, 15:34
Оценка за ответ: 5
Комментарий оценки:
Спасибо.

Отвечает: Мурник Роман
Здравствуйте, Pushkin!
Я создавал базу прямо в Access и алиасы вообще не использовал.
Указывай вместо алиаса путь к базе и имя таблицы, вот и все.
Ответ отправил: Мурник Роман (статус: 1-ый класс)
Отправлен: 12.06.2005, 16:36

Отвечает: sir henry
Здравствуйте, Pushkin!
1. Если Вы работаете с БД через BDE, то нет НИКАКОЙ РАЗНИЦЫ с каким типом БД Вы работаете. Нюансы, конечно, есть, но принцип (команды, передвижение по таблицам, добавление записей) одинаковы.
В Дельфи 7 (в других, кстати, тоже), в каталоге DEMOSDB есть куча примеров по работе с БД.
2. Видимо неправильно алиас задаете. :)
Зайдите в программу "BDE Administrator" и задайте алиас там.
3. Примерно так-же как и в BDE, только основной момент в АДО это работа через запросы (компонент ADOQuery) - для получения наборов данных, либо, если это изменение данных (добавление, удаление, создание таблиц и т.п.) через ADOCommand. Т.е. Вам прежде всего нужно изучить язык SQL той БД, в которой Вы собираетесь работать.
Вот ссылка на статьи по работе с ADO:
http://www.delphikingdom.com/asp/itemq.asp?mode=1&itemid=128
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 13.06.2005, 06:14
Оценка за ответ: 4
Комментарий оценки:
Есть некоторая информативность. Спасибо


Вопрос № 22.086
Здравствуйте эксперты!
В продолжение вопроса 22082
При попытке подключения (в компоненте ADOConnection) к базе mdb выдается сообщение:
Error
Системная база данных отсутствует или открыта с монопольным доступом другим пользователем.
Что это за системная база данных?
Если создаю новую базу, то без проблем открывается, хотя никакой системной базы и нет.
Спасибо.
Отправлен: 12.06.2005, 15:53
Вопрос задал: Pushkin (статус: 4-ый класс)
Всего ответов отправлено: 2

Отвечает: Jadd
Здравствуйте, Pushkin!
При настройке подключения к базе НЕ НУЖНО ставить галку "монопольный доступ". Тогда там будет блокировка доступа. Проверь настройки.
---------
Hakuna matata
Ответ отправил: Jadd (статус: 9-ый класс)
Отправлен: 12.06.2005, 15:57
Оценка за ответ: 5
Комментарий оценки:
Не много повозился в настройках и все получилось. Спасибо, что подтолкнули в нужном направлении!

Отвечает: sir henry
Здравствуйте, Pushkin!
Может быть неправильно указываете тип БД. По-моему Access-97 и Access-2000 довольно сильно различаются.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 13.06.2005, 06:18


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

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

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

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

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


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


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное