Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Вниз

3-ри ВОПРОСА К МАСТАКАМ-МАСТЕРАМ!   Найти похожие ветки 

 
Man-In-Red   (2002-06-26 20:18) [0]

У меня есть три вопроса, помогите пожалуйста!
1. Есть задачка:
Есть компоненты StringGrid и PrintDialog…
Нужно как-то распечатать содержимое stringgrid’а без разметки – только текст, и чтобы перед печатью можно было вызвать окно компонента PrintDialog , чтобы указать число копий, страниц и т. д…
Можно как-то вставить текст из StrGrid’а в QuickRep, или еще куда-нибудь, я просто плохо знаю компоненты со вкладки Qreport…
Есть идейка на крайний случай – вставить содержимое StringGrid’а в RichEdit, так будет проще распечатать и без разметки, но тут есть одно НО: Нужно будет как-то выровнять текст чтобы он выглядел таблицей, а как?
В общем такая трабла!
И два вопроса есть еще:
1. Как сохранить содержимое StringGrid’а в файл?
2. Как загрузить содержимое StringGrid’а из файла?
Если есть какие-нибуть идеи, очень прошу поделитесь!
Заранее благодарен!


 
Man-In-Red   (2002-06-26 21:43) [1]

Помогите пожалуйста


 
Stelius   (2002-06-26 21:44) [2]

Если тебе необходимо, чтобы в файле StringGrid имел вид таблицы (как в текстовых редакторах), то с этим я тебе помочь не смогу, а вот для сохранения значений воспользуйся, например, ini-файлом:

[SG]
Cell1_1=<значение в ячейки 1,1>
Cell1_2=<значение в ячейки 1,2>
...


 
Man-In-Red   (2002-06-27 00:25) [3]

А есть ли какой-нибудь попроще способ?
А то это сильно сложно что-то – там столбцов 100, и 4 ряда – долго будет…
Буду очень благодарен за помощь!


 
Song   (2002-06-27 08:56) [4]

Вопрос про печать с решением был на раньше чем вчера. Про загрузку и сохранение, поищите, я уверен, найдёте. Если не найдёте, пришлю.


 
Stelius   (2002-06-27 20:40) [5]

Сделай в цикле:


var
MyIni : TIniFile;
begin
MyIni := TIniFile.Create(<имя_файла>);
for i := 0 to StringGrid1.ColCount do begin
for j := 0 to StringGrid1.RowCount do begin
MyIni.WriteString("SG", "Cells" + IntToStr[i] + "_" +
IntToStr(j), <строка_из_ячейки_i,j>);
end;
end;
MyIni.Free;
end;


Вместо WriteString можно WriteInteger, WriteFloat и т.д., смотря, что нужно.


 
Man-In-Red   (2002-06-28 02:17) [6]


> Song © (27.06.02 08:56)

Я сначала ищу сам перед тем как вопрос в форум ставить…
Не нашел, пришлите пожалуйста на мыло: man-in-red@mail.ru


 
Man-In-Red   (2002-06-28 16:01) [7]

Ну допустим как сохранить мы разобрались… а как тогда загрузить информацию с ini файла (я с ними никогда не работал)?
Буду очень благодарен!


 
Мастер Денис   (2002-06-28 18:54) [8]

А не проще твой StringGrid в Excel перегнать?


 
Бурундук   (2002-06-28 19:09) [9]

Печать:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1025088873&n=0

А сохранять и читать, я думаю, проще в TStreamFile поэлементно
(в начале записать число колонок и столбцов).


 
Man-In-Red   (2002-06-28 19:23) [10]


> Бурундук (28.06.02 19:09)

В этом примере нельзя указывать количество копий…. А это мне надо!


А с сохранением мы уже разобрались… пример сверху…а теперь как мне по такому же принципу загрузить данные в StringGrid?


 
Stelius   (2002-06-28 20:09) [11]

Для загрузки используй:
var
MyIni : TIniFile;
begin
MyIni := TIniFile.Create(<имя_файла>);
for i := 0 to StringGrid1.ColCount do begin
for j := 0 to StringGrid1.RowCount do begin
StringGrid1.Cells[i,j] := MyIni.ReadString("SG", "Cells" +
IntToStr[i] + "_" + IntToStr(j),
<значени_если_не_найдено_поле_например_"">);
end;
end;
MyIni.Free;
end;

Аналогично есть ReadInteger, ReadFloat и т.д.


 
Stelius   (2002-06-28 20:11) [12]

Для загрузки используй:

var
MyIni : TIniFile;
begin
MyIni := TIniFile.Create(<имя_файла>);
for i := 0 to StringGrid1.ColCount do begin
for j := 0 to StringGrid1.RowCount do begin
StringGrid1.Cells[i,j] := MyIni.ReadString("SG", "Cells" +
IntToStr[i] + "_" + IntToStr(j),
<значени_если_не_найдено_поле_например_"">);
end;
end;
MyIni.Free;
end;

Аналогично есть ReadInteger, ReadFloat и т.д.


 
Man-In-Red   (2002-06-28 20:23) [13]

Спасибо…
Но остается еще один вопрос!
Тут есть пример печати с StringGrid’а:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1025088873&n=0 Но там невозможно выставить число копий…
Как это сделать?
И может, даже лучше, как-то по-другому печатать StringGrid, с использованием компонентов типа PrintDialog и PrintSetupDialog? Или как-то там Printer.BeginDoc… Printer.Canvas(…)…Printer.EndDoc…


 
eheyler   (2002-06-29 15:09) [14]

Да что же может быть проще?

if PrintDialog.Execute then
begin
for i := 0 to PrintDialog.Copies-1 do
begin
Printer.BeginDoc;
K := Printer.Canvas.Font.PixelsPerInch /
Canvas.Font.PixelsPerInch*1.2;

PrintStringGrid(StrGrid,
K, // zoom
200, // left margin
200, // top margin
200 // bottom margin
);

Printer.EndDoc;
end;
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.013 c
4-47880
SPeller
2002-05-14 15:19
2002.07.15
Хук на нажатие клавиш


4-47865
JaMin
2002-05-06 16:39
2002.07.15
Мастера спасайте!!!


3-47228
PTE
2002-06-20 11:14
2002.07.15
Помогите чайнику полному разобраться с TQuery и работой с базе


6-47633
BAHO
2002-03-28 20:09
2002.07.15
Мониторинг компов в локалке...


3-47226
diww
2002-06-20 12:14
2002.07.15
Помогите с запросом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский