1. Как можно сделать для TDBImage свойство Proportional ? такое возможно?
У меня в Д2009 присутствуют свойства Proportional и Stretch:
Цитата
2. почему после удаления картинок из БД ее размер не уменьшается?
Чтобы уменьшить размер Access-базы, надо сделать из самого Access-а Tools->Database Utilities->Repair and Compact Database. По-моему в ДРКБ было описано, как это сделать прямо из Дельфи, но точно не могу утверждать...
Цитата
Delphi 7 ... Вот, что получилось:
Посмотреть могу только визуально, ибо в Д7 еще не было работы с Юникодом, а у меня установлена по умолчанию НЕ кириллица, так что я вижу кракозябры. Ну, главное чтоб тебе нравилось
Хотя я предпочитаю давать файлам, таблицам и полям названия на английском языке (в крайнем случае - латинскими буквами), а то знаешь, мало ли...
Кстати, она на Виндовс 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...
И еще сразу же вопрос: если мне для работы ДБГрид не нужен(таблица на форме), то все равно его надо кинуть на форму и установить Visible:=False; или без него можно как-то обойтись(ADOTable1 или DataSource1 они же вроде выполняют функции свызывания с базой).
если мне для работы ДБГрид не нужен(таблица на форме)
Хм... Ну, обойдись без него, просто не клади его на форму. Никто не запрещает связывать тот же TDBImage напрямую с TDataSource. Грид - он только для отображения информации.
Цитата
Вот нашел как программно сжать бд.
Ух ты "А мужики-то не знают" (С), и по-старинке пользуются:
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 }
// Вызывать - так: 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;
Почему при перемещении по DataSource информация в DBText1 не меняется??? Спасайте, пожалуйста. Завтра уже надо сдавать тест в полностью рабочем состоянии...
проект не компилится, если закомментировать то не запускается... Как в ДАТАСУРСЕ перемещаешся? Или через table? Кстати, а пароль как узнать можно от базы?
проект не компилится, если закомментировать то не запускается... Как в ДАТАСУРСЕ перемещаешся? Или через table? Кстати, а пароль как узнать можно от базы?
Пароль и имя пустые. Почему не компилится? Если пишет что базы нет - то это путь надо поменять. Как Volvo писал, только через ДатаРесурс
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)
создал заново проект, добавил твою базу, кинул на форму дбтекст и дбедит. Все нормально обновляется...
Добавлено через 7 мин. если без DBText никуда, то попробуй добавить обычный Label и задавай ему значение поля для текущей записи. Почему DBText сам не обновляется даже нет идей...