Форум » GUI » Помощь начинающему » Ответить

Помощь начинающему

Badim: Люди подскажите пожалуйста как распечатать текстовый файл с предпросмотром. Смотрел пример BmpViewer. Но а как для текстого файла такое сделать незнаю.

Ответов - 7

Andrey: Badim пишет: Люди подскажите пожалуйста как распечатать текстовый файл с предпросмотром. notepad myfile.txt

Badim: Средствами MiniGUI

Andrey: Выдрал у себя из проекта. Идею возьми... FUNCTION Main PUBLIC cFoldTemp, lYearPapkaCopy, lUnzip, lDelete, cPath PUBLIC cPathFrom, cPathTo, cMASK, cFolder, cLogoFile PUBLIC cMyProgramm, cMyCopyright, lDir2x3x M->cPathFrom := "" ; M->cPathTo := "" ; M->cMASK := "" ; M->cFolder := "" ; M->cLogoFile := "" M->lUnzip := .F. ; M->lDelete := .F. ; M->lYearPapkaCopy := .F. ; M->cPath := "" ; M->lDir2x3x := .F. //Узнаём текущий путь M->cPath := SubStr( ExeName(), 1, RAt( "\", ExeName() ) - 0 ) cIni := SubStr( ExeName(), 1, RAt( ".", ExeName() ) - 1 ) + '.ini' // Чтение параметров из INI-файла ReadIniFile() // Создаём папки ..\REPORT и C:\Windows\Temp\@SBANK TestFolder() // загружаем форму Load Window FormA // Присваеваем форме свойства // Загружаем значения текстовых полей из переменных SetFormAProp() LoadLogotype() // центрируем FormA.Center // стартуем FormA.Activate RETURN Nil // загружаем форму отчётов FUNCTION LoadReport() Load Window fReport GetReportFiles() fReport.Center fReport.Activate RETURN Nil // Функция заполнения поля данными FUNCTION GetReportFiles() LOCAL ADir := { }, nI, cFile // Получаем список файлов в папке отчётов с маской ТХТ ADir := Directory( M->cPath + M->cFolder + "*.txt" ) FOR nI := Len( ADir ) TO 1 STEP - 1 cFile := SubStr( ADir[ nI, 1 ], 1, Len( ADir[ nI, 1 ] ) - 4 ) // Добавляем элемент из массива //cFile:=IIf(nI==Len(ADir),cFile+" (Последний отчёт)",cFile) fReport.List_1.AddItem( cFile ) // Присваиваем номер по порядку fReport.List_1.Value := nI NEXT // Возвращаемся к началу списка fReport.List_1.Value := 1 RETURN Nil // Выбираем файл отчёта по его номеру FUNCTION SelectReportFile( lUseNotepad ) LOCAL nn := fReport.List_1.Value, cVal, cTemp IF lUseNotepad == .T. cVal := AllTrim( fReport.List_1.Item( nn ) ) cTemp := M->cPath + M->cFolder + cVal + ".txt" ShellExecute(, "open", "notepad.exe", cTemp,, 1 ) ELSE cVal := AllTrim( fReport.List_1.Item( nn ) ) cTemp := M->cPath + M->cFolder + cVal + ".txt" fReport.Edit_1.Value := MemoRead( cTemp ) ENDIF RETURN Nil //// Делаем форму, а на форме там .... типа того: DEFINE WINDOW TEMPLATE AT 140 , 235 WIDTH 730 HEIGHT 350 TITLE "Список всех отчётов..." ICON "iProgramm" MODAL NOSIZE NOSYSMENU BACKCOLOR {251,214,136} DEFINE LISTBOX List_1 ROW 10 COL 10 WIDTH 173 HEIGHT 296 ONCHANGE SelectReportFile(.F.) ONDBLCLICK SelectReportFile(.T.) END LISTBOX Это кусок моей проги "Программа копирования файлов оплат из СБЕРБАНКА (клиент-банк)"


Badim: Что то всеравно не то в MiniGUI есть samples там есть BmpViewer. Что то типа такого Static Procedure FilePrint() *--------------------------------------------------------* Local nScale := 1 / 3.937, nX, nY, nH, nW IF !Empty( cFile ) .AND. File( cFile ) INIT PRINTSYS SELECT BY DIALOG IF HBPRNERROR != 0 RETURN ENDIF SET UNITS MM // Sets @... units to milimeters SET PAPERSIZE DMPAPER_A4 // Sets paper size to A4 IF nHeight >= nWidth SET ORIENTATION PORTRAIT // Sets paper orientation to portrait nH := 250 nW := 170 ELSE SET ORIENTATION LANDSCAPE // Sets paper orientation to landscape nH := 170 nW := 250 ENDIF SET BIN DMBIN_FIRST // Use first bin SET QUALITY DMRES_HIGH // Sets print quality to high SET COLORMODE DMCOLOR_COLOR // Set print color mode to color SET PREVIEW ON // Enables print preview SET PREVIEW RECT 0, 0, nScrHeight, nScrWidth START DOC NAME Left(PROGRAM, 9) START PAGE DO WHILE .T. nX := Round( nHeight * nScale, 0 ) nY := Round( nWidth * nScale, 0 ) IF ( nX <= nH .AND. nY <= nW ) .OR. nScale < 0.15 EXIT ENDIF nScale -= 0.05 ENDDO @ 15,20 PICTURE cFile SIZE nX, nY END PAGE END DOC RELEASE PRINTSYS ENDIF Return

Badim: Вместо "@ 15,20 PICTURE cFile SIZE nX, nY" надо загрузить текстовый файл

Баламут: Здравствуйте! На форме в mini GUI у меня есть несколько окн, как в Run Time поменять фокус на объектах Не ругайтесь я только начал осваивать))

Баламут: Извините за беспокойства разобрался



полная версия страницы