How to display an array with some strings on a colored background

This forum is for eXpress++ general support.
Post Reply
Message
Author
User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

How to display an array with some strings on a colored background

#1 Post by Eugene Lutsenko »

Hi!

How to display an array with some strings on a colored background. These must be strings in which the values of the specified array elements meet certain criteria. When displaying a database, I know how to do this (I learned it here), but it doesn't work with an array

Code: Select all

 ****** Показать все файлы в папке ..\AID_DATA\Inp_data\  и отметить файлы размером > 10 Мб.
 ****** Если такие есть, то выдать сообщение о том, что они не будут записаны на FTP-сервер из-за ограничений хостинга.

 PUBLIC aDir := Directory()
*wtf oFtp:Directory()                          // VALUE: {{"Downloads.exe", 10242016, 20201202, "07:57:00", "N", 0,         , "00:00:00",         , "00:00:00"}}

 IF LEN(aDir) > 0                              // Если папка в облаке не пустая, т.е. кроме . и .. есть хотя бы один файл

    **** Просмотр массива директории с FTP-сервера от Роджера

    PRIVATE aDirShow[Len(aDir)+1,5]
    mSummaSize = 0

    mFlag10Mb = .F.
    
    FOR j := 1 TO Len(aDir)-1
        aDirShow[j,1] = ALLTRIM(STR(j))
        aDirShow[j,2] = aDir[j,F_NAME]
        aDirShow[j,3] = STR(aDir[j,F_SIZE])
        aDirShow[j,4] = DTOC(aDir[j,F_WRITE_DATE])
        aDirShow[j,5] = aDir[j,F_WRITE_TIME]
        mSummaSize = mSummaSize + aDir[j,F_SIZE]

       IF aDir[j,F_SIZE] > 1024^2
          mFlag10Mb = .T.
       ENDIF

    NEXT

    aDirShow[Len(aDir)+1,2] = L('Суммарный объем')
    aDirShow[Len(aDir)+1,3] = mSummaSize

*   @ 0,0 DCBROWSE oBrowse DATA aDirShow SIZE 88,25 IIF(ELEMENT 3 > 1024^2,{nil,aColor[153]},{nil,GRA_CLR_WHITE})                               // Управление фоном отображения строки от Роджера
    @ 0,0 DCBROWSE oBrowse DATA aDirShow SIZE 88,25
    DCBROWSECOL ELEMENT 1 HEADER 'File Num ' WIDTH  5 PARENT oBrowse
    DCBROWSECOL ELEMENT 2 HEADER 'File Name' WIDTH 20 PARENT oBrowse
    DCBROWSECOL ELEMENT 3 HEADER 'File Size' WIDTH 10 PARENT oBrowse
    DCBROWSECOL ELEMENT 4 HEADER 'File Date' WIDTH  8 PARENT oBrowse
    DCBROWSECOL ELEMENT 5 HEADER 'File Time' WIDTH  8 PARENT oBrowse

    IF mFlag10Mb
       @26,2 DCPUSHBUTTON CAPTION L('Среди файлов приложения есть размером > 10 Мб') SIZE 86, 1.5 ACTION {||Help13f()} FONT '10.Helv Bold'
    ENDIF

    DCREAD GUI FIT TITLE L('Файлы приложения')

    *** Имя файла всегда последнее в строке, искать его справа налево до ":"
    *** Отличать имена файлов от имен папок, использовать только имена файлов

User avatar
rdonnay
Site Admin
Posts: 4722
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: How to display an array with some strings on a colored background

#2 Post by rdonnay »

Compile and run the below code. It should help.

Code: Select all

#INCLUDE "dcdialog.ch"

FUNCTION Main()

LOCAL GetList[0], aDir := Directory(), oBrowse,i

@ 0,0 DCBROWSE oBrowse DATA aDir SIZE 50,10 COLOR {||RowColor(oBrowse,aDir)}

FOR i := 1 TO 10
  DCBROWSECOL ELEMENT i HEADER 'Col ' + Alltrim(Str(i)) WIDTH 10 PARENT oBrowse
NEXT

DCREAD GUI FIT

RETURN nil

PROC appsys ; RETURN

STATIC FUNCTION RowColor(oBrowse,aDir)

LOCAL aColor

IF aDir[oBrowse:arrayElement,2] > 1000  // File size greater than 1000 bytes
  aColor := { GRA_CLR_WHITE, GRA_CLR_DARKPINK}
ELSE
  aColor := { nil, nil }
ENDIF

RETURN aColor
The eXpress train is coming - and it has more cars.

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: How to display an array with some strings on a colored background

#3 Post by Eugene Lutsenko »

Everything turned out great! Thank you, Roger!

Post Reply