Вопрос № 92237: Здравствуйте.
Подскажите как из Delphi использовать кодек lame_enc.dll
без использования доп. компонентов...Вопрос № 92264:
Здравствуйте уважаемые эксперты. В DelphiWorld прочитал, как вставить картинку в RichEdit. Подскажите, пожалуйста, как можносделать панель параметров изображения как в Word`е (контрасность, яркость, обрезка,тип линии и др.)
..Вопрос № 92305: Здравствуйте уважаемые! Постараюсь объяснить суть проблемы на следующем отрывке из текстового файла:
4 6 77 0 1 8
5 9 99 1 0 9
6 7 181 1 3 35
ну и так далее. Необходимо так организовать цикл прохождения по файлу,что бы встретив в четв...Вопрос № 92322: Уважаемые эксперты, как упаковать ADOTable, которая есть dbf ...Вопрос № 92335: Здравствуйте.
Как осуществить поиск по таблице Access, так что бы поиск информации осуществлялся по всей таблице, а не по конкретному столбцу?
Я знаю такой вариант поиска, но он меня не устраивает, так как поиск информации осуществляется по к...Вопрос № 92368: Здравствуйте. Скажите можно сделатьтак чтобы сохраненные данные в БД можно было где-то сохранить и если что восстановить. Ситуация: Во время внесения списка были нечаяно удалены не те строчки.Как можно сделать так чтобы в следующий раз после сохранен...
Вопрос № 92.237
Здравствуйте.
Подскажите как из Delphi использовать кодек lame_enc.dll
без использования доп. компонентов
Отправлен: 20.06.2007, 18:36
Вопрос задал: Iamantbkru (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Градов Юрий Михайлович
Здравствуйте, Iamantbkru!
Привожу выдержку из учебника "32 урока по Delphi". DLL- это такое же приложение, как и *.exe. При использовании DLL Вам необходимо знать перечень процедур и функций, входящих в DLL, а также параметры их запуска.
Приложение:
--------- Глаза боятся - руки делают!
Ответ отправил: Градов Юрий Михайлович (статус: Практикант)
Ответ отправлен: 21.06.2007, 01:32
Вопрос № 92.264
Здравствуйте уважаемые эксперты. В DelphiWorld прочитал, как вставить картинку в RichEdit. Подскажите, пожалуйста, как можносделать панель параметров изображения как в Word`е (контрасность, яркость, обрезка,тип линии и др.)
Отвечает: Louken
Здравствуйте, Бушманова Ирина Юрьевна!
Что касается, обработки изображения, то и тут уйма проблем. Вы же собираетесь иметь возможность вставки изображений нескольких форматов (bmp, jpg и т.д.), тогда, чтобы иметь возможность обрабатывать эти рисунки, Вам придется перекодировать его в формат BMP (TBitmap). про это смотрите статьи в DelphiWorld:
Преобразовать JPEG в BMP
Как преобразовать WMF в BMP
Как создать BMP из ICO
Как работать с GIF файлами 2
Ищите с помощью поиска (клавиша - F3)
Если говорить про обрезку рисунка, я имею ввиду, с помощью каких средств, конечный пользователь Вашей программы, будет это производить, сделать как в word'e, Вам, скорее всего, неудастся это реализовать, но можно это сделать с помощью четырех кнопочек: обрезать сверху, снизу и т.д или же, с помощью TSpinEdit со вкладки Samples.
Чтобы иметь возможность изменения контрастности изображения, то Вам надо посмотреть статью:
Графика и игры -> Bitmap -> Изменение контрастности изображения,
про изменение яркости, я Вам ничего сказать не могу.
Чтобы установить тип линии у рисунка, Вам придется исходное изображение увеличивать на 1 пиксель со всех сторон (для линии шириной в 1 пиксель), и потом просто нарисовать эту линиию:
Canvas.Pen.Width:=5; //Ширина рамки
Canvas.Pen.Color:=clBlue; //Цвет рамки
Canvas.Pen.Style:=psDot; //Тип линии - пунктир, только учтите что для линии шириной больше 1-го пиксела, свойство Canvas.Pen.Style игнорируется
Canvas.Brush.Style:=bsClear; //Рисуем прямоугольник без заполнения
Canvas.Rectangle(Canvas.ClipRect); //Здесь вставьте нужные размеры Вашей рамки
Canvas.Brush.Style:=bsSolid;
Поворот изображения:
Графика и игры -> Bitmap -> Вращение изображения на заданный угол.
Дак вот, чтобы все эти возможности объединить, вам надо в памяти, всегда иметь исходное изображение, создавать его копию и потом уже изменять ее.
var b1, b2: TBitmap;
...
b2:=TBitmap.Create;
b2.Assign(b1);
//изменяйте b2, b1 - это исходное изображение
Когда Вы, как-то отредактируете Вашу картинку, то старую картинку из RichEdit'a Вам нужно удалить и вставить новую.
И еще напоследок скажу, канва - очень медленная штука, так что не ругайте ее и код, который я Вам дал.
Удачи, в том не легком проекте, за который вы взялись.
Ответ отправил: Louken (статус: 8-ой класс)
Ответ отправлен: 21.06.2007, 11:56
Вопрос № 92.305
Здравствуйте уважаемые! Постараюсь объяснить суть проблемы на следующем отрывке из текстового файла:
4 6 77 0 1 8
5 9 99 1 0 9
6 7 181 1 3 35
ну и так далее. Необходимо так организовать цикл прохождения по файлу,что бы встретив в четвёртом или в пятом числе 0, строка бы удалялась (в данном случае это первая и вторая строки). Числа могут быть и дробными и отрицательными. Количество пробелов между цифрами не является фиксированным числом.Помогите с кодом.
Отправлен: 21.06.2007, 06:33
Вопрос задал: GAZOT (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Coupler
Здравствуйте, GAZOT!
Код в приложении. Чтобы удалить строку, используется вспомогательный файл, куда пишутся все строки без нулей на 4 или 5 месте.
Приложение:
Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 21.06.2007, 07:38 Оценка за ответ: 5
Отвечает: Louken
Здравствуйте, GAZOT!
Код в приложении.
Думаю все будет понятно.
Приложение:
Ответ отправил: Louken (статус: 8-ой класс)
Ответ отправлен: 21.06.2007, 10:35 Оценка за ответ: 5
Вопрос № 92.322
Уважаемые эксперты, как упаковать ADOTable, которая есть dbf
Отправлен: 21.06.2007, 09:31
Вопрос задала: K_tash (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Кэр Лаэда
Здравствуйте, K_tash!
Используя ADO, вы Dbf не упакуете. для этого можно использовать BDE
По рекомендации от Microsoft упаковать таблицу через ADO можно посредством запроса SELECT в новую таблицу
приблизительно так
select * into новая_таблица from старая_таблица
в приложении ссылка по теме
Приложение:
--------- Я знаю что ничего не знаю, но я знаю больше, чем тот кто думает что знает все
Ответ отправил: Кэр Лаэда (статус: Студент)
Ответ отправлен: 21.06.2007, 12:38 Оценка за ответ: 5 Комментарий оценки: Спасибо, хотелось без лишних движений, но вижу никак
Вопрос № 92.335
Здравствуйте.
Как осуществить поиск по таблице Access, так что бы поиск информации осуществлялся по всей таблице, а не по конкретному столбцу?
Я знаю такой вариант поиска, но он меня не устраивает, так как поиск информации осуществляется по конкретному столбцу и требуется точное совпадение наименования, а мне надо, что бы поиск осуществлялся даже если введены только первые буквы.:
//Если строка поиска пустая, то нечего искать
if Trim(Edit1.Text) = '' then
Exit;
//Если нет товара, сообщаем, что не нашли.
if not adoDB.Locate('Название поля', Edit1.Text, []) then
MessageBox(Application.Handle, PChar(Информация в списке отсутствует!'), PChar('Ошибка!'), MB_ICONINFORMATION);
Отвечает: Omickron
Здравствуйте, Молостов Дмитрий Викторович!
Я не работал с таблицей Access.
Но вижу такой выход:
Наверняка есть доступ к столбцам таблицы по индексам. Либо вы знаете все заголовки стобцов таблицы.
В общем, в цикле по столбцам ищите вхождение строки поиска (srstr) в строку поля (instr). Есть такая функция Pos (substr:string; s:strging):integer;
Она возвращает позицию первого символа подстроки substr в строке s, либо 0, если подстрока в строке не найдена.
if Pos(srstr,instr)=0 then
MessageBox(Application.Handle, PChar(Информация в списке отсутствует!'), PChar('Ошибка!'), MB_ICONINFORMATION);
Это - для одной строки. Это же самое нужно сделать в цикле, где будет меняться строка поля (instr)
Удачи!
Ответ отправил: Omickron (статус: 2-ой класс)
Ответ отправлен: 21.06.2007, 11:43
Отвечает: Sandy
Здравствуйте, Молостов Дмитрий Викторович!
Вам, вероятно, следует использовать что-то вроде:
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]); (взято из хелпа делфи по Locate)
Последняя опция - частичное совпадение, может еще понадобится игнор заглавных/строчных - loCaseInsensitive.
Имхо, мне представляется поиск Locate не самый быстрый путь. Подумайте о рпименени фильтрующих запросов в датасетах, в которых используются SQL выражения вроде LIKE или CONTAINING.
Удачи.
Ответ отправил: Sandy (статус: 4-ый класс)
Ответ отправлен: 21.06.2007, 12:06
Вопрос № 92.368
Здравствуйте. Скажите можно сделатьтак чтобы сохраненные данные в БД можно было где-то сохранить и если что восстановить. Ситуация: Во время внесения списка были нечаяно удалены не те строчки.Как можно сделать так чтобы в следующий раз после сохранения информации ее можно было восстановить из какого-то источника.
Отвечает: Примак Руслан Николаевич
Здравствуйте, Веретенников Игорь Викторович!
Вы можете использовать фильтр для выборки и физически не удалять, а помечать записи, как удаленные, как делается в системе 1С.
Допустим, при выборке: select * from Goods where Deleted = 0
А при удалении, делаете: update Goods set Deleted = 1 where id = :old_id,
где id - уникальное поле идентифицирующее запись.
Ответ отправил: Примак Руслан Николаевич (статус: 3-ий класс)
Ответ отправлен: 21.06.2007, 15:38
Отвечает: Градов Юрий Михайлович
Здравствуйте, Веретенников Игорь Викторович!
Копируете проводником (файловым менеджером) файлы баз данных и индексные файлы в другую папку (в архив). Файлы могут быть с расширением: *.dat, *.idx, *.db, *.dbf, *.cdx, *.mdb, *.cds. Если Вы не сильны с расширениями файлов, просто скопируйте всю папку с программой в отдельный архив. Если Вы пишите приложение на Delphi, можно предусмотреть кнопку сохранения архивов в ZIP и восстановление архива из ZIP, применив компонент VCLZip.
--------- Глаза боятся - руки делают!
Ответ отправил: Градов Юрий Михайлович (статус: Практикант)
Ответ отправлен: 21.06.2007, 16:09
Отвечает: Кэр Лаэда
Здравствуйте, Веретенников Игорь Викторович!
Можно организовать что то вроди корзины
и тут возникает разделение:
1. если хранить нужно только во время работы приложения, то можно хранить в структурах данных например создать массив Record ов и при удалении записыватьих в него, соответственно при закрытии программы эти данные безвозвратно удаляются. Естественно нужно будет предусмотреть возможность манипуляции этим списком (восстановление, удаление, редактирование)
2. если хранить нужно даже после закрытия
то тогда соглашусь с экспертом Примак Руслан Николаевич, нужно добавить колонку Корзина, и если пользователь удалил строку поставить в эту колонку значение true и соответственно при основной работе не отображать данные в котором поле равно true
ну и конечно не забудьте предусмотреть отдельную работу с данными этими данными (Работа с корзиной)
Удаление (Очистка корзины) восстановление, и т.д.
При очистке корзины просто делать удаление записей где в поле корзина стоит true
а для восстановления просто ставить в поле Корзина false.
--------- Я знаю что ничего не знаю, но я знаю больше, чем тот кто думает что знает все
Ответ отправил: Кэр Лаэда (статус: Студент)
Ответ отправлен: 21.06.2007, 17:37