IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> База вопросов
sheka
сообщение 11.02.2010 1:36
Сообщение #21


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Цитата
Поле типа Memo
Я текстовым пользуюсь), чтобы красиво в таблице выводило.

Хотя мне идея 3 понравилась больше всего, но почему-то 2я поолучилась, по-моему, красивее.
Delphi 7

Вопросики:
1. Как можно сделать для TDBImage свойство Proportional ? такое возможно?
2. почему после удаления картинок из БД ее размер не уменьшается?

Вот, что получилось: Прикрепленный файл  TestMaker.rar ( 333.38 килобайт ) Кол-во скачиваний: 286
Посмотрите, пожалуйста, не смотря на то, что там весь код Ваш)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.02.2010 2:09
Сообщение #22


Гость






Цитата
1. Как можно сделать для TDBImage свойство Proportional ? такое возможно?
У меня в Д2009 присутствуют свойства Proportional и Stretch:
Прикрепленное изображение

Цитата
2. почему после удаления картинок из БД ее размер не уменьшается?
Чтобы уменьшить размер Access-базы, надо сделать из самого Access-а Tools->Database Utilities->Repair and Compact Database. По-моему в ДРКБ было описано, как это сделать прямо из Дельфи, но точно не могу утверждать...

Цитата
Delphi 7
...
Вот, что получилось:
Посмотреть могу только визуально, ибо в Д7 еще не было работы с Юникодом, а у меня установлена по умолчанию НЕ кириллица, так что я вижу кракозябры. Ну, главное чтоб тебе нравилось smile.gif

Хотя я предпочитаю давать файлам, таблицам и полям названия на английском языке (в крайнем случае - латинскими буквами), а то знаешь, мало ли...
 К началу страницы 
+ Ответить 
sheka
сообщение 15.02.2010 20:48
Сообщение #23


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Надо бы вопросы выбирать из БД рандомно. Как это осуществить?
Как выделить запись я так и не нашел, тем более вы говорили что этого лучше не делать.

Откуда можно скачачть Д2009 ? Кстати, она на Виндовс 7 нормально работает, еще не проверяли?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 15.02.2010 20:54
Сообщение #24


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


ADOTable1.RecNo и ADOTable1.RecordCount - это текущая запись и количество записей. Этого может и хватит.
Цитата
на Виндовс 7 нормально работает
На 7 не знаю, на висте все нормально...

Сообщение отредактировано: Client - 15.02.2010 20:55
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 15.02.2010 21:00
Сообщение #25


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Цитата(Client @ 15.02.2010 19:54) *
это текущая запись и количество записей.

Мне надо выбрать рандомно запись...
Вот, например, с массивом я бы это делал так m[random(RecordCount)] итд. А как с базой быть?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.02.2010 22:21
Сообщение #26


Гость






Цитата
Кстати, она на Виндовс 7 нормально работает, еще не проверяли?
Прекрасно работает и на Win7 тоже.

Цитата
Вот, например, с массивом я бы это делал так m[random(RecordCount)] итд. А как с базой быть?

procedure TForm1.btnRandomRecClick(Sender: TObject);
var Curr: integer;
begin
with DBGrid1.DataSource.DataSet do
begin
Curr := Random(RecordCount);
First;
MoveBy(Curr);
end;
end;
, только не забудь вызвать при инициализации формы Randomize, иначе будешь получать все время одну и ту же запись. Чтобы видеть выбранную строку, желательно в опциях ДБГрида установить gdRowSelect и dgAlwaysShowSelection...
 К началу страницы 
+ Ответить 
sheka
сообщение 15.02.2010 22:37
Сообщение #27


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


http://www.cyberguru.ru/delphi-sources/db-...olzuya-dao.html
Вот нашел как программно сжать бд. Только Делфи ругается на DAO2000, говорит, что такого модуля он не знает.

И еще сразу же вопрос: если мне для работы ДБГрид не нужен(таблица на форме), то все равно его надо кинуть на форму и установить Visible:=False; или без него можно как-то обойтись(ADOTable1 или DataSource1 они же вроде выполняют функции свызывания с базой).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.02.2010 0:15
Сообщение #28


Гость






Цитата
если мне для работы ДБГрид не нужен(таблица на форме)
Хм... Ну, обойдись без него, просто не клади его на форму. Никто не запрещает связывать тот же TDBImage напрямую с TDataSource. Грид - он только для отображения информации.

Цитата
Вот нашел как программно сжать бд.
Ух ты smile.gif "А мужики-то не знают" (С), и по-старинке пользуются:
Uses ComObj; // Добавить если еще нет этого модуля

// ...

function CompactAndRepair(DB: string) : boolean;
var
v: OLEvariant;
begin { CompactAndRepair }
Result := True;
try
v := CreateOLEObject('JRO.JetEngine');
try
//try
v.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DB,
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DB +
'x;Jet OLEDB:Engine type=5');
DeleteFile(DB);
RenameFile(DB + 'x', DB)
finally
v := Unassigned
end; { try }

except
Result := False
end; { try }
end; { CompactAndRepair }

// Вызывать - так:
procedure TForm1.btnCompactDBClick(Sender: TObject);
const sDBPath = 'F:\Programs\Delphi\myProject\base.mdb';
begin
ADOTable1.Close; // Закрываем все открытые таблицы и саму базу...
ADOConnection1.Close;

if CompactAndRepair(sDBPath) then
ShowMessage('Success')
else
ShowMessage('Fault');

ADOConnection1.Open; //Открываем в обратном порядке, сначала базу, потом - таблицы
ADOTable1.Open;
end;
, только для этого надо не устанавливать в Инспекторе Объектов ADOConnection.Connected в True, а делать это при инициализации формы, иначе база будет открыта в монопольном режиме, и сжатие не будет произведено. То же самое касается и ADOTable - они в Design-Time должны быть неактивны, активизировать их надо будет при запуске:
procedure TForm1.FormCreate(Sender: TObject);
begin
ADOConnection1.Open;
ADOTable1.Open;

// Ну, и что там тебе еще надо было...
end;
 К началу страницы 
+ Ответить 
sheka
сообщение 4.03.2010 21:22
Сообщение #29


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Почему при перемещении по DataSource информация в DBText1 не меняется???
Спасайте, пожалуйста. Завтра уже надо сдавать тест в полностью рабочем состоянии... wacko.gif


Прикрепленные файлы
Прикрепленный файл  новый.zip ( 522.28 килобайт ) Кол-во скачиваний: 118
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 4.03.2010 21:39
Сообщение #30


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


проект не компилится, если закомментировать то не запускается...
Как в ДАТАСУРСЕ перемещаешся? Или через table?
Кстати, а пароль как узнать можно от базы?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 4.03.2010 21:45
Сообщение #31


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Цитата(Client @ 4.03.2010 20:39) *

проект не компилится, если закомментировать то не запускается...
Как в ДАТАСУРСЕ перемещаешся? Или через table?
Кстати, а пароль как узнать можно от базы?

Пароль и имя пустые. Почему не компилится? Если пишет что базы нет - то это путь надо поменять.
Как Volvo писал, только через ДатаРесурс
form1.DataSource1.DataSet.First;
form1.DataSource1.DataSet.MoveBy(ord(variation[1])-1);

Это в procedure NextQuestion;

Сообщение отредактировано: sheka - 4.03.2010 21:48
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 4.03.2010 22:03
Сообщение #32


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Путь к базе поменял в AdoConnection.
procedure NextQuestion;
var i:integer;
begin
form1.DataSource1.DataSet.First;
form1.DataSource1.DataSet.MoveBy(ord(variation[1])-1);
form1.DBText1. // вот ошибка
delete(variation,1,1);
DrawComboNew;
inc(curr);
form1.Memo1.Lines.Clear;
for i:=1 to length(variation) do
form1.Memo1.Lines.Add(inttostr(ord(variation[i])));
end;

Без этой строки такая ошибка (на скрине)
В моем проекте (для теста, база Access) данные DBText и DBEdit обновляются при перемещеним (и через датасурс и через AdoTable)


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 4.03.2010 22:09
Сообщение #33


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Цитата
form1.DBText1. // вот ошибка
Забыл видимо))), но проблема не в этом.

Комп глючный!!!
Раньше все нормально работало, а теперь та проблема, о которой я говорю. Сейчас на ХР попробую...



Добавлено через 6 мин.
На ХР тоже не работает...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 4.03.2010 22:21
Сообщение #34


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


запустилось... smile.gif
хм, если добавить в твой проект DBEdit, то в нем инфа обновляется, а в DBText нет...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 4.03.2010 22:22
Сообщение #35


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Цитата(Client @ 4.03.2010 21:21) *

запустилось... smile.gif
хм, если добавить в твой проект DBEdit, то в нем инфа обновляется, а в DBText нет...

Вот и я о том же!!! Хотя раньше работало..
В Delphi 2009 тоже не работает.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 4.03.2010 22:30
Сообщение #36


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


создал заново проект, добавил твою базу, кинул на форму дбтекст и дбедит. Все нормально обновляется...

Добавлено через 7 мин.
если без DBText никуда, то попробуй добавить обычный Label и задавай ему значение поля для текущей записи. Почему DBText сам не обновляется даже нет идей...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 4.03.2010 23:01
Сообщение #37


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Я думал, что проект мог быть "битым". Такое у меня уже бывало, но мне лень было его переделывать заново...
Спасибо за указание! good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 15.03.2010 22:14
Сообщение #38


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


volvo, Client, большое спасибо! Программу написал, сдал!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V < 1 2
 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.04.2024 23:00
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"