Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Delphi Включить VertScroolBar формы при bsNone Как включить VertScroolBar формы при bsNone? и можно ли вообще? https://www.cyberforum.ru/ delphi-beginners/ thread1474266.html Строковый тип данных - Составить программу, печатающую каждое слово предложение в обратном порядке Delphi
Строковый тип данных - Составить программу, печатающую каждое слово предложение в обратном порядке. P.S. Распишите все пожалуйста:)
Delphi Двухмерный массив - Найти сумму элементов, расположенных перед максимальными элементом таблицы Двухмерный массив - Найти сумму элементов, расположенных перед максимальными элементом таблицы, и заменить на это значение все нулевые элементы таблицы! P.S. Распишите все пожалуйста:) https://www.cyberforum.ru/ delphi-beginners/ thread1474246.html Delphi Проверка подключения к интернету не работает Использую вот такую штуку: Try IdHTTP1.Get( 'http://yandex.ru' ); InetConnection := True; Except InetConnection := False; End; но всегда получается False, раньше работало нормально. https://www.cyberforum.ru/ delphi-beginners/ thread1474240.html
Рассчитать стоимость услуг, исходя из стоимости одной минуты Delphi
Доброго времени суток! Стояла довольно тривиальная задача рассчитать стоимость услуг исходя из стоимости одной минуты(из бд). При этом сутки разделены на три периода, стоимость в рамках каждого своя. Как высчитать сколько в каждом периоде было минут оказания услуг. Время начала и конца запоминается по нажатию кнопки. Заранее благодарен, всю голову сломал уже, аж самому стыдно.:sorry:
Delphi Передача данных в определенный момент (квант) времени по таймеру Есть чат (UDP, TCP, Socket: т.е. фактически 3 штуки): надо передавать в определенный момент времени передавать от клиента серверу (или обратно, без разницы) определенный объем информации*. Знаю лишь только, что надо делать это в цикле. Ставить два таймера: в начале цикла и в конце (t1 и t2). Вопрос в том, как это осуществить можно? Хотелось бы увидеть небольшой пример. И второй вопрос:... https://www.cyberforum.ru/ delphi-beginners/ thread1474236.html
Delphi Получить целочисленные значения из StringList-а https://www.cyberforum.ru/ delphi-beginners/ thread1474195.html
Есть процедура MyProcedure(1,3,5,7), 1,3,5,7 - значения, которые посылаются в процедуру для дальнейшей обработки:Integer. Я хочу брать из StringList значения по очереди и загонять их в MyProcedure(). Список в StringList (тип Str нужно переделать в Int): 2,4,0,5 3,4,0,5 ... и т.д. Как это сделать правильно? Спасибо!
Delphi Можете написать алгоритм этого метода
Это алгоритм умножения со старших разрядов. Очень нужно. Если кто может помогите пожалуйста.
Delphi Работа с Edit1 Edit2 и CheckBox Всем доброго времени суток. Меня заинтересовал такой вопрос, как сохранить данные в файл из Edit1 и Edit2, если стоил галочка на CheckBox? И как сделать что бы в последующий запуск программы эти данные автоматически загружались в поля Edit1 и Edit2? https://www.cyberforum.ru/ delphi-beginners/ thread1474146.html Delphi ImageList с индексами не по порядку https://www.cyberforum.ru/ delphi-beginners/ thread1474145.html
Добрый день, есть необходимость добавлять в ImageList картинки с указанием индекса. То есть чтобы можно было подключить ImageList к toolbar например или popmenu у которых индекс мог бы быть равен не порядковому числу в ImageList. Добавлено через 1 минуту Суть вопроса, есть ли сторонний компонент ImageList в катором была бы такая возможность или кто нибуть побывал переписывать стандартный
Delphi Расход бензина
Средствами Delphi создать проект, содержащий форму для ввода данных о поездке:  пункт назначения (Владимир, Иваново, Чкаловск) - при помощи списка,  вид бензина - при помощи зависимых переключателей (Аи-95, Аи-92),  расход бензина в литрах на 100 км - при помощи ползунка с шагом 5 литров Вычислить стоимость поездки и отобразить полученное значение в системном окне сообщений, учитывая, что...
Delphi Динамическое добавление и удаление компонента OleContainer https://www.cyberforum.ru/ delphi-beginners/ thread1474131.html
Доброго времени суток. Вот код на создание компонента OleContainer в определенном количестве. У меня он работает так: после нажатия создается таблица 3х3 и заполняется документами, при повторном нажатии "таблица" обновляется, а хотелось чтобы контейнеры дальше создавались(по одному, или диалоговое окно и там пользователь сам выбирает нужное ему кол-во добавляемых документов) и производилось...
0 / 0 / 0
Регистрация: 07.06.2015
Сообщений: 3
10.06.2015, 18:28  [ТС] 0

Выделение мышью неполных рядов StringGrid на Delphi XE7 - Delphi - Ответ 7745059

10.06.2015, 18:28. Показов 1525. Ответов 4
Метки (Все метки)

Ответ

Да, спасибо, почти также сделал час назад. Сейчас попробуем из двух мыслей собрать одну.
Переменные я не объявлял в Private, но это и не суть пока. Вот только таблица у меня промаргивает не смотря на параметр DoubleBuffered := true, но это наверное из тормозов при выводе сообщений в Memo, но это еще не проверял.

Укороченный вариант всего года, вынес только наработанное по данному вопросу. Это черновик, начало условного решения.
Код
var
PressMouse: Booleane;
StartRows, StartCols: Integer;
StopRows, StopCols: Integer;
CurRows, CurCols: Integer;

procedure TForm6.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
if ((StartRows <> StopRows) or (StartCols <> StopCols)) then
    begin
        
        if searchCellSelect() = True  then  // Здесь
        begin
        Brush.Color := ColorBrushSelectCell; 
        Format := DT_CENTER;
        end;
    end;
end;

procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
  ACol, ARow: Integer;
begin
  //
  StringGrid1.MouseToCell(X, Y, ACol, ARow);

  if (PressMouse = True) and ((CurRows <> ARow) or (CurCols <> ACol)) then
  begin
    Form1.LogExecute('Ряд: ' + IntToStr(ARow) + ', Столбец ' + IntToStr(ACol));
    StartRows := CurRows;
    StartCols := CurCols;
    StopRows := ARow;
    StopCols := ACol;
    StringGrid1.Invalidate;
  end
end;

procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
var
  ACol, ARow: Integer;
begin
  Form1.StringGrid1.MouseToCell(X, Y, ACol, ARow);
  
  Form1.LogExecute('MouseDown: ' + IntToStr(ARow) + '.' + IntToStr(ACol));

  PressMouse := True;
  CurRows := ARow; // Временное значение
  CurCols := ACol; // Временное значение
end;

procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
var
  ACol, ARow: Integer;
begin
  Form1.StringGrid1.MouseToCell(X, Y, ACol, ARow);
  
  Form1.LogExecute('MouseUp: ' + IntToStr(ARow) + '.' + IntToStr(ACol));

  PressMouse := False;
end;
Жаль, без внешних переменных не получается, приходится их задействовать. Сейчас сяду, попробую сделать процедуру поиска всех выделенных ячеек. У меня не только задача выделить ячейки за периметром, но и есть дублированные выделения ячеек через пропуск одного столбца. То есть виртуально две таблицы в одной.

Добавлено через 1 час 54 минуты
В StringGrid1MouseMove нельзя просто запускать инициализацию ячеек по условию Pressed, иначе будет затираться из памяти диапазон выделенных ячеек, которые можно использовать для копирования. Также будет слетать выделение при прокрутке, в принципе в своем коде я поставил защиту на Move над ячейкой.

И вот эту строку
Код
if (StartCol = -1) or (StartRow = -1) or (gdFixed in State) then Exit;
также нельзя использовать, иначе не будет отрабатывать обычная отрисовка ячеек, пока гуляешь по таблице, а в конце процедуры Exit тем более нет смысла ставить.

Думаю дальше над непосредственным рисованием уже известных ячеек. Вариант больше или меньше пока не прокатывает.

Вернуться к обсуждению:
Выделение мышью неполных рядов StringGrid на Delphi XE7 Delphi
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2015, 18:28
Готовые ответы и решения:

Delphi 7 Stringgrid Нужно сделать цикл для заполнения Stringgrid данными из другого Stringgrid
Нужно чтобы из Stringgrid1 данные переносились в Stringgrid2 Но ТОЛЬКО ПО УСЛОВИЮ Таблицы...

Delphi 7 SAPI ошибка в Delphi XE7
Привет знатоки поиске нашел sapi на delphi 7 работает а Delphi XE7 выдает ошибку на TTSNotifySink =...

StringGrid Сортировка рядов
Доброго времени суток. Собственно задача - Есть StringGrid заполненный значениями Имя, Город,...

Удаление рядов в StringGrid
Как нормально удаить ряды в таблице Пишу int row_count = StringGrid1-&gt;RowCount; int AfterIndex...

4
10.06.2015, 18:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2015, 18:28
Помогаю со студенческими работами здесь

Убрать выделение мышью
Привет всем. Помогите пожалуйста. В консоли в цикле выводятся символы. При выделении этих символов...

Выделение нескольких объектов мышью
Всем здрасьте! Как вы знаете, в Windows 8 выделение нескольких объектов мышью (замижаем ЛКМ)...

Выделение нескольких объектов мышью
Подскажите как выделить квадратом несколько объектов в gride

Выделение области канвы мышью
Доброго времени суток. Задался целью выделить область канвы мышью, визуально алгоритм должен быть...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru