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

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


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

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

Выпуск № 901
от 21.08.2007, 15:35

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


Вопрос № 98544: Доброго время суток! :) Недавно встала задача следующего содержания. Имеется набор линий и, соответственно, набор точек, определяющих отрезки этих точек (см. пример в приложении). Естественно эти линии/отрезки ограничивают некоторые полигоны в опреде...
Вопрос № 98573: Здравствуйте! Скажите пожалуйста, как с помощью указателей редактировать свойства объекта? Заранее спасибо....
Вопрос № 98615: Здравствуйте, уважаемые эксперты! Проблема вот в чем. Не получается в TcxGrid редактировать данные в ячейках. Что нужно сделать что бы ячейки были доступны для редактирования?...

Вопрос № 98.544
Доброго время суток! :) Недавно встала задача следующего содержания. Имеется набор линий и, соответственно, набор точек, определяющих отрезки этих точек (см. пример в приложении). Естественно эти линии/отрезки ограничивают некоторые полигоны в определенной области. Нужно написать функцию, на вход которой подается набор этих отрезков, а на выходе получаем все полигоны (например, задаваемые координатами вершин в порядке их следования). Даже не имею предположения с чего начать :( Может подскажете идейку какую? :)

Приложение:

Отправлен: 15.08.2007, 19:34
Вопрос задал: kopfschwarz (статус: 4-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: PGM
Здравствуйте, kopfschwarz!

А у вас есть гарантия, что линии не пересекаются (у вас на картинке именно так)? Если есть, то можно предложить алгоритм обхода с двойной пометкой ребер (фиксируем что будем обходить против часовой стрелки, а также дополним его "периметром" по граничным точкам (ваш пунктир) - чтобы обеспечить единообразие и замкнутость полигонов).

1. Берем любое ребро на котором нет двух пометок, добавляем его в новый полигон и помечаем, запоминаем начальную точку А. Если таковых ребер нет (на всех по две пометки), то полигонов больше нет.
2. Для конечной точки ребра ищем среди всех исходящих ребер кроме текущего, ребро с минимальным углом от текущего и добавляем его в полигон и помечаем.
3. Проверяем не является ли конечная точка нового ребра точкой А, если нет, то повторяем шаг 2, если да, то полигон собран и можно переходить к шагу 1 (искать следующий).

Надеюсь вам это поможет как "идейка" :).
Ответ отправил: PGM (статус: 9-ый класс)
Ответ отправлен: 15.08.2007, 23:06
Оценка за ответ: 5
Комментарий оценки:
Да-да... неплохая мысль :) Спасибо ;)
P.S. Линии действительно могут и пересекатся.


Вопрос № 98.573
Здравствуйте!

Скажите пожалуйста, как с помощью указателей редактировать свойства объекта?

Заранее спасибо.
Отправлен: 16.08.2007, 03:31
Вопрос задал: _porodox_ (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 10)

Отвечает: Delph
Здравствуйте, _porodox_!

На основе дополнительных сведений, которые Вы сообщили на минифоруме, и подытоживая всё сказанное участниками обсуждения, рекомендую написать:

1) В библиотеке, меняющей свойство неизвестного объекта:

type TEditMethod = procedure(value: integer) of object; stdcall;

procedure MyEditor(EditProc: TMethod); stdcall; export;
var EditMethod: TEditMethod;
begin
EditMethod := TEditMethod(EditProc);
EditMethod(_значение_);
end;

2) в приложении:
Пусть для определённости редактирующий метод определён так:

procedure SetValue(var value: integer);

Тогда мы можем передать его в библиотеку:

type TSetValue = procedure(var value: integer);
procedure X;
var Editor: TSetValue;
begin
Editor := SetValue;

// Вызов метода из библиотеки для передачи ссылки
MyEditor(TMethod(Editor));
end;

------------------------------

Я указал лишь простейшие примеры. Вы же можете подстроить логику процедур под свою задачу (например, сохранить где-то в библиотеке ссылку на редактирующий метод и затем использовать её по своему усмотрению)
Ответ отправил: Delph (статус: 7-ой класс)
Ответ отправлен: 17.08.2007, 15:19


Вопрос № 98.615
Здравствуйте, уважаемые эксперты! Проблема вот в чем. Не получается в TcxGrid редактировать данные в ячейках. Что нужно сделать что бы ячейки были доступны для редактирования?
Отправлен: 16.08.2007, 13:43
Вопрос задал: Radik (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Проходящий Мимо
Здравствуйте, Radik!
Во-первых, для DBTableView нужно разрешить свойства:
DBTableView.OptionsData.Inserting := true;
Appending := true;
.Deleting := true;
.Editing := true;
.Inserting := true;
Во-вторых, для нужных столбцов разрешить редактирование (програмно или в инспекторе обьектов):
TableViewColumn1.Properties.ReadOnly:=false;
Также нужно не забыть разрешить редактирование на уровне DataSource.
Удачи.
---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 9-ый класс)
Ответ отправлен: 16.08.2007, 14:13
Оценка за ответ: 5
Комментарий оценки:
Спасибо, но все эти параметры выставлены правильно. а ячейка все равно не редактируется

Отвечает: Владик
Здравствуйте, Radik!
Для того чтобы редактировать данные в ячейке необходимо два раза щелкнуть по таблице, появится Editing TcxGrid.Columns. и в свойствах колонок ставишь ReadOnly значение False. Если нет колонок то жмешь на кнопку Add All Fields
Ответ отправил: Владик (статус: 1-ый класс)
Ответ отправлен: 16.08.2007, 15:44


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.56 beta от 20.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное