Вопрос № 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