Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.02.2015, 17:45
Faust-14 Faust-14 вне форума
Прохожий
 
Регистрация: 12.02.2015
Сообщения: 4
Версия Delphi: RAD Studio XE7
Репутация: 10
По умолчанию Помощь с ListView, распределение данных по ячейкам

Народ, в Delphi я новичок, опыта нет в написании программ, учусь чисто по ходу написания нужной мне программы. Столкнулся с проблемой. Необходимо написать программу, что бы при введении чисел в поля Edit и проведении над ними математических операций, по нажатию на одну, кнопку нужные данные распределялись по ячейкам в ListView. Пытался в интернете найти способ создания таблиц в Delphi или чего-то в этом роде, и наткнулся, что можно сделать это при помощи ListView. Как оперировать математическими операциями - я знаю. Проблема в следующем, как полученный результат внести в нужные ячейки? Что нужно писать в коде? Какая функция? Можете на примере разъяснить? Читал всякую инфр, справочники, кулибничал с кодом, но того, что надо - не получается. Устал уже искать-читать, решил у спецов совета спросить.
Вот пример:
http://i63.fastpic.ru/big/2015/0212/...36e42ce73.jpeg - пример по ссылке
Дано - Edit 1-9, кнопка Button и ListView с ячейками 1-3. Необходимо, что бы при нажатии на кнопку, поля 1,2 и 3 складывались, поля 4,5 и 6 переумножались и поля 7,8 и 9 вычитались, а результаты записывались в нужные ячейки. Как такое можно организовать?
Заранее спасибо.
Сторонний вопрос, можно ли будет потом произвести печать через принтер из ListView, ну или на крайняк сохранить в текстовый файл? Такое возможно?
Ответить с цитированием
  #2  
Старый 12.02.2015, 18:41
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Нужно выставить у ListView свойство ViewStyle как vsReport и добавить 3 колонки
Код:
...
with ListView1.Items.Add do
  begin
    Caption:=    IntToStr(StrToInt(Edit1.Text) + StrToInt(Edit2.Text) + StrToInt(Edit3.Text));
    SubItems.Add(IntToStr(StrToInt(Edit4.Text) * StrToInt(Edit5.Text) * StrToInt(Edit6.Text)));
    SubItems.Add(IntToStr(StrToInt(Edit7.Text) - StrToInt(Edit8.Text) - StrToInt(Edit9.Text)));
  end;
...
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
Faust-14 (15.02.2015)
  #3  
Старый 13.02.2015, 01:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Сторонний ответ.
1. Можно просто вывести на печать всю форму как графический объект.
2. можно отрисовать Listview на TBitmap и уже потом печатать этот битмап (как вариант, можно сразу отрисовывать на канве принтера)
3. Можно просто взять информацию из ListView и как текст ее напечатать на принтере (ну и в файл сохранить).
4. Можно взять любой репортер (QuickReport, FastReport, сомневаюсь, что здесь потребуется что-то более мощное) и, немного пошаманив, сделать красивый отчет.
5. Можно придумать еще кучу разных способов, типа экспорта в Word/Excel и печати оттуда.
Короче, все зависит от конкретной задачи и хотелок.
Ответить с цитированием
  #4  
Старый 13.02.2015, 12:07
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Почему выбран ListVeiw, а не DrawGrid/StringGrid?
Ответить с цитированием
  #5  
Старый 15.02.2015, 19:11
Faust-14 Faust-14 вне форума
Прохожий
 
Регистрация: 12.02.2015
Сообщения: 4
Версия Delphi: RAD Studio XE7
Репутация: 10
По умолчанию

Спасибо за ответы) Смог двигаться далее...)
Цитата:
Сообщение от AlexSku
Почему выбран ListVeiw, а не DrawGrid/StringGrid?
Ну, я не спец в Delphi и пытался искать что то вроде таблиц. Попался вариант с ListView, решил использовать его. Сейчас главное, написать свою программу для работы для личного пользования, а уже после, как напишу, можно и рихтануть кое-какие моменты. Как раз по программе...

Есть проблемка в одном моменте... Все поперассмотрел, может запутался и ошибся где-то, но ошибку не нашел. В третью колонку, в процессе проверки, загружаю вычесление с названием переменной ZDSh1. Должна происходить математическая операция, но вместо этого, почему-то выдает ноль.
Проект прилагается.
Заранее спасибо.
Вложения
Тип файла: rar OtkOtl DELPHI.rar (57.6 Кбайт, 4 просмотров)
Ответить с цитированием
  #6  
Старый 15.02.2015, 21:24
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Да нет, вроде меняются данные, просто всегда выполняется равенство DL=DR, вы в едитах 2 и 4 цифирки попробуйте поменять немного
Ответить с цитированием
  #7  
Старый 16.02.2015, 10:50
Faust-14 Faust-14 вне форума
Прохожий
 
Регистрация: 12.02.2015
Сообщения: 4
Версия Delphi: RAD Studio XE7
Репутация: 10
По умолчанию

Все, спасибо, разобрался) Просто запутался в таком объеме переменных)
Есть еще вопросик... Вот код:
Код:
if DL=DR then begin
    ZDSh:=K+D+KU+KD+F;
  end
  else begin
    ZDSh1:=K+D1+KU+KD+F;
    ZDSh2:=K+D2+KU+KD+F;
    ZDSh:=???(ZDSH1+'текст\n'+ZDSh2+'текст'); // В этом месте выдает ошибку (!) запутался, не знаю, что вставить
  end;
end;
// Вывод расчетных данных в таблицу
with ListView1.Items.Add do
  begin
    Caption:=String('#');
    SubItems.Add(String(ID));
    SubItems.Add(IntToStr(ZDSh));
Меня интересует второе условие... А именно, я не знаю, как сделать так, что бы можно было Вывести параметр ZDSh1 и ZDSh2 в SubItems.Add(IntToStr(ZDSh)). Что нужно поставить, что бы в SubItems можно было вывести ZDSh по такому принципу:
ZDSh=ZDSH1+'тут свой текст\n'+ZDSh2+'тут еще один текст'

Спасибо заранее)

P.S. Есть ли какая литература или информационный материал где на пальцах о переменных и строках всяких будет рассказано, с примерами. А то читаю порой мануалы всякие и кое где вникаю, где то не понятно.
Ответить с цитированием
  #8  
Старый 23.02.2015, 16:37
Faust-14 Faust-14 вне форума
Прохожий
 
Регистрация: 12.02.2015
Сообщения: 4
Версия Delphi: RAD Studio XE7
Репутация: 10
По умолчанию

В общем, наконец-то, разобраося с переменными) Усвоил что к чему. Проблемка возникла в следующем...

К примеру вот этот код, для вывода данных в ListView:

Код:
...
with ListView1.Items.Add do
  begin
    Caption:=    IntToStr(StrToInt(Edit1.Text) + StrToInt(Edit2.Text) + StrToInt(Edit3.Text));
    SubItems.Add(IntToStr(StrToInt(Edit4.Text) * StrToInt(Edit5.Text) * StrToInt(Edit6.Text)));
    SubItems.Add(IntToStr(StrToInt(Edit7.Text) - StrToInt(Edit8.Text) - StrToInt(Edit9.Text)));
  end;
...

Пробовал, кулибничал, не могу сделать так, что бы вывод был в две строки. Искал в нете информацию, тоже все в пустую. Как сделать так, что бы за одно нажатие кнопки, выводились данные в две строки?

Последний раз редактировалось Faust-14, 23.02.2015 в 17:04.
Ответить с цитированием
  #9  
Старый 24.02.2015, 00:00
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Что значит "в 2 строки"?
Что бы данные отрисовывались в одной ячейке в 2 строки? Тогда надо перекрывать отрисовку и делать ее самому.
Что бы добалялись 2 строки? Дык вызов ListView1.Items.Add как раз и добавляет новую строку. Далее код просто через with работает с неявной переменной. Вот совершенно аналогичный код, просто с явным присваиванием временной переменной:
Код:
var
  Item : TListItem;
begin
  Item := ListView1.Items.Add;
  Item.Caption:=    IntToStr(StrToInt(Edit1.Text) + StrToInt(Edit2.Text) + StrToInt(Edit3.Text));
  Item.SubItems.Add(IntToStr(StrToInt(Edit4.Text) * StrToInt(Edit5.Text) * StrToInt(Edit6.Text)));
  Item.SubItems.Add(IntToStr(StrToInt(Edit7.Text) - StrToInt(Edit8.Text) - StrToInt(Edit9.Text)));
end;
Ответить с цитированием
  #10  
Старый 24.02.2015, 23:38
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Да не, lmikle, думаю что ты так только усложняешь объяску, проще посоветовать ТСу повторить блок with, кстати, обычно такое делается в цикле и можно сколько угодно пунктов\строчек добавлять, причём с разными значениями
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter