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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1142
от 10.07.2008, 08:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 437, Экспертов: 3
В номере:Вопросов: 7, Ответов: 8

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 139099: Здравствуйте! Надеюсь поможите. Делаю что-то типа электронного учебника и надо чтобы слева было меню - содержание... чтобы оно сворачивалось за экран... у кого есть Opera последних версий меня поймут... Когда подносишь мышку влево до конца экрана и щ...
Вопрос № 139310: На форме компонент TImage с загруженной картинкой. Как по щелчку ЛКМ создавать на нем другие Timage с картинками? В том месте, конечно, где щелкнули....
Вопрос № 139332: Здраствуйте. Меня интересует вопрос как написать задачу на языке делфи: на загруженный рисунок наложить сетку получится 9 блоков, в центре 4 точки(точки пересечения линий). Перетащив любую точку в другие координаты должны в этой области получить раст...
Вопрос № 139347: Здравствуйте Уважаемые эксперты!У меня на форме StringGrid,мне нужно сделать так,что бы при клике п о определённой ячейке,вылетал диалог открытия файла и как только нужный файл будет открыт в ячейку должен записаться полный путь до файла.Помогите мне ...
Вопрос № 139374: Здравствуйте!Помогите мне пожалуйста.На форме SpeedButton, нужен обработчик onMouseDown. При нажатой мышке надо потаскать SpeedButton по форме до нужного места. При отжатой мышке SpeedButton должен остаться на том месте,куда его поместили....
Вопрос № 139557: Здравствуйте Уважаемые!В Delphi есть такая штука бросаешь на форму несколько одних и тех же компонентов(допустим SpeedButton)они автоматически получют Name SpeedButton1,SpeedButton2,SpeedButton3 ну и т.д. Теперь если удалить SpeedB...
Вопрос № 139566: Уважаемые эксперты! Есть приложение, есть кнопка для выбора файла. Нужно по кнопке "блокировать" установить атрибуты файла faReadOnly и запретить другим приложениям изменять атрибуты файла, пока мое приложение активно. Спасибо. ...

Вопрос № 139.099
Здравствуйте! Надеюсь поможите. Делаю что-то типа электронного учебника и надо чтобы слева было меню - содержание... чтобы оно сворачивалось за экран... у кого есть Opera последних версий меня поймут... Когда подносишь мышку влево до конца экрана и щелкаешь открываеться меню (история, закладки и т.д.)... вот мне такое надо... подскажите какой компонент мне использовать и как это реализовать.
Спасибо!
Отправлен: 05.06.2008, 08:19
Вопрос задал: Djoin (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Antony Belov
Здравствуйте, Djoin!

У меня когда щелкаешь на край панели, то эта панель сворачивается, либо если заводишь мышку за правый край экрана (на самом деле это край приложения), то при щелчке панелька разворачивается.
Такое у меня реализовано так:

Кидаем TPanel и сплитер (мы же хотим чтобы можно было и вручную менять ширину).
Затем обрабатываем событие OnMouseUp для панели (учтите, что если на панели лежат контролы, и они заходят в область щелчка, то придется и им это событие прописать). Учтите, что панель в свернутом состояние у меня имеет Width = 1, чтобы можно было на неё клинуть (хотя её не видно глазом), а сплитер в свернутом состояние я скрываю.

В свойстве Tag панели я храню 0, если панель развернута и 1 если свернута.

Далее моя реализация, я думаю вы сможете её переделать без труда (но как всегда есть и другие варианты реализации).
pHelp это TPanel.
sHelp это сплитер
AnimTm и DelayTm константы для анимации 200 и 100 (можете крутить, чтоб подобрать плавное свертывание).

Приложение:

Ответ отправил: Antony Belov (статус: 1-ый класс)
Ответ отправлен: 07.06.2008, 00:41


Вопрос № 139.310
На форме компонент TImage с загруженной картинкой. Как по щелчку ЛКМ создавать на нем другие Timage с картинками? В том месте, конечно, где щелкнули.
Отправлен: 06.06.2008, 12:42
Вопрос задал: Марков Александр Сергеевич
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Antony Belov
Здравствуйте, Марков Александр Сергеевич!

Уточните задачу пожалуйста. Что вы делайте?

В общем случае вам надо не TImage создавать, а при помощи метода TCanvas.Draw() вашего TImage отрисовывать на нем объект TGraphic, кторый вы заранее загружайте нужной картинкой (это если вы не хотите исходное изображение изменять, иначе это делать надо в Image1.Picture.Bitmap.Canvas.Draw()). А делать это это в OnMouseUp.
Ответ отправил: Antony Belov (статус: 1-ый класс)
Ответ отправлен: 07.06.2008, 00:55


Вопрос № 139.332
Здраствуйте. Меня интересует вопрос как написать задачу на языке делфи: на загруженный рисунок наложить сетку получится 9 блоков, в центре 4 точки(точки пересечения линий). Перетащив любую точку в другие координаты должны в этой области получить растяжение. остальная картинка остаеся прежней. Принцип морфинга изображения, но только тут главное получить это растяжение и все,,, Помогите пожалуйста, очень нужно,,
Отправлен: 06.06.2008, 15:57
Вопрос задал: Беломестнов Олег Владимирович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PavelGM
Здравствуйте, Беломестнов Олег Владимирович!

Разбиваете картинку на 9 картинок и масштабируете каждую в зависимости от ее целевого прямоугольника.

Если вопрос в том как масштабировать, то простейший вариант (грубый) - StretchBlt. Более совершенные можно поискать в Инете алгоритмы интерполяции (фильтры) - линейный, бикубический (би-сплайны), Белла (Bell), треугольный, Хермита (Hermite), Ланкроза (Lanczos), Митчела (Mitchell).

Но эти операции очень процессорозатратны. Как вариант, можно в динамике использовать слабый алгоритм (например, линейный), а после остановки перемещения линий более сильный (например, кубический).

P.S. Если нужна высокая скорость, то кажется у Intel была библиотека примитивов, оптимизированная под процессоры, но там C знать надо, чтобы обертку написать.

P.P.S. Еще в GDI+ были встроены какие-то алгоритмы качественного масштабирования. Но их реально не использовал, про скорость ничего не скажу.
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 09.06.2008, 10:53


Вопрос № 139.347
Здравствуйте Уважаемые эксперты!У меня на форме StringGrid,мне нужно сделать так,что бы при клике по определённой ячейке,вылетал диалог открытия файла и как только нужный файл будет открыт в ячейку должен записаться полный путь до файла.Помогите мне пожалуйста в решении этой задумки.
Отправлен: 06.06.2008, 17:54
Вопрос задал: Зотов.Г.А (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Louken
Здравствуйте, Зотов.Г.А!

Код обработчика события OnMouseDown, вместе с подробными комментариями, в приложении.

Приложение:

Ответ отправил: Louken (статус: Студент)
Ответ отправлен: 06.06.2008, 20:56

Отвечает: Абельхарисов Руслан / Marked O
Здравствуйте, Зотов.Г.А!
Во-первых, положите на форму диалог открытия файлов TOpenDialog с закладки Dialogs.
При клике мышкой по ячейке, вызывается обработчик события OnClick. Значит мы должны использовать это событие.
Измените обработчик щелчка по ячейки таким образом:

if OpenDialog1.Execute then
 begin
  //Здесь выполняете открытие файла, например Memo1.lines.LoadFromFile(OpenDialog.FileName)
  StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]:=ExtractFilePath(OpenDialog1.FileName);
 end;

В первой строке мы вызываем диалог и проверяем, успешно ли он закончился(пользователь нажал ОК и выбрал файл).
Если да, то изменяем текст текущей ячейки, на путь к файлу.

Доступ к ячейке осуществляется таким образом:
 StringGrid1.Cells[индекс колонки, индекс строки]

Индекс текущей колонки получаем через свойство Col у StringGrid'а, а индекс строки через свойство Row

Полный путь к файлу получаем с помощью функции ExtractFilePath().
Она объявлена в модуле SysUtils и имеет такой вид:
 function ExtractFilePath(const FileName: string): string;
FileName-полное имя файла, возвращает полный путь до файла.

Удачи!!!
Ответ отправил: Абельхарисов Руслан / Marked O (статус: Студент)
Ответ отправлен: 06.06.2008, 20:57


Вопрос № 139.374
Здравствуйте!Помогите мне пожалуйста.На форме SpeedButton, нужен обработчик onMouseDown.
При нажатой мышке надо потаскать SpeedButton по форме до нужного места. При отжатой мышке SpeedButton должен остаться на том месте,куда его поместили.
Отправлен: 06.06.2008, 22:30
Вопрос задал: Зотов.Г.А (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Louken
Здравствуйте, Зотов.Г.А!

Код в приложении.
Удачи.

Приложение:

Ответ отправил: Louken (статус: Студент)
Ответ отправлен: 06.06.2008, 22:53


Вопрос № 139.557
Здравствуйте Уважаемые!В Delphi есть такая штука бросаешь на форму
несколько одних и тех же компонентов(допустим SpeedButton)они
автоматически получют Name
SpeedButton1,SpeedButton2,SpeedButton3 ну и т.д. Теперь если удалить
SpeedButton2 и снова бросить на форму новый SpeedButton он получит Name не
SpeedButton4, а SpeedButton2.У меня в проекте кнопки создаются программно
и программно они удаляются,как мне назначать Name своим кнопкам подобно
дельфийскому.
Отправлен: 08.06.2008, 16:01
Вопрос задал: Зотов.Г.А (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Antony Belov
Здравствуйте, Зотов.Г.А!

Я бы сделал так:
1. Завёл бы массив создаваемых кнопок (вам так и работать с ними будет проще).

type arButtons = array of TButton;

2. Завёл глобальную переменную с типа arButtons в ней и будем хранить наш массив.

Ниже код модуля. На форме леджит 2 кнопки - "добавить кнопку" и "удалить кнопку". Кнопка Button1 - добавить кнопку - добавляет кнопку и конфигурирует её. А Button2 - удаляет первую кнопку в массиве.

Приложение:

Ответ отправил: Antony Belov (статус: 1-ый класс)
Ответ отправлен: 08.06.2008, 22:55
Оценка за ответ: 4
Комментарий оценки:
Спасибо за ответ,но я думаю что нашёл более простой способ ........... i := 1; while true do begin ButtonName := \'Button\' + IntToStr(i); if not Assigned(FindComponent(ButtonName)) then Break; inc(i); end; ButtonNew.Caption := ButtonName; ButtonNew.Name:= ButtonName; ...........


Вопрос № 139.566
Уважаемые эксперты! Есть приложение, есть кнопка для выбора файла. Нужно по кнопке "блокировать" установить атрибуты файла faReadOnly и запретить другим приложениям изменять атрибуты файла, пока мое приложение активно. Спасибо.
Отправлен: 08.06.2008, 16:47
Вопрос задал: Копылов Виктор Иванович
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Antony Belov
Здравствуйте, Копылов Виктор Иванович!

Файл будет заблокирован для всех кроме созданого файлового потока в любом случае, если вы его откройте через TFileStream с параметром fmShareExclusive.

Атрибут нет необходимости устанавливать. Заблокировать изменение только атрибута файла невозможно.
Ответ отправил: Antony Belov (статус: 1-ый класс)
Ответ отправлен: 08.06.2008, 23:08


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.99 RC 5.0 от 08.07.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное