Subroutine RunDial Use PenDiaL External InDATA What процедуры связанны

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
Subroutine RunDial()
Use PenDiaL
External InDATA, What ! процедуры, связанные с диалогом
flag = DLGInit(FORM_1, MyDLG ) ! Инициализация и активизация формы ДИАЛОГА
! FORM_1 - идентификатор ДИАЛОГА, MyDLG - переменная производного типа ДИАЛОГ
If(.NOT.flag) Stop "Dialog FORM_1 not fount"
If_OK(1:5) = .True.
!MAXt =20; if_OK=.True. ! начальные значения (значения по умолчанию)
!Write(String,"(i4)") MAXt ! Число полных колебаний
! flag=DLGSet(MyDLG, Edt_tMax, adjustl(String)) ! пишем в Edt_tMax-control строку сдвинутую влево
flag=DLGSet(MyDLG, Lab_ERROR, "")
!flag=DLGSet(MyDLG, Edt_tMax , MAXt ) ! пишем в Edt_tMax-control число ???
! flag=DLGSet(DXY, ERROR, "") ! ???
! Для эл-та Scroll Bar "ScrB_MAXi":
flag = DLGSet(MyDLG, ScrB_MAXt, 39, DLG_RANGEMax)
flag = DLGSet(MyDLG, ScrB_MAXt, 1, DLG_RANGEmin)
flag = DLGSet(MyDLG, ScrB_MAXt, 5, DLG_POSITION)
! Для эл-та Control Box nvalue:
flag = DLGGet(MyDLG, ScrB_MAXt, MAXt, DLG_POSITION)
Write(String, *) MAXt
flag = DLGSet(MyDLG, Lab_MAXt, adjustl(String)) ! запись значения в Lab_LDisk
! Для эл-та Scroll Bar "ScrB_Ld":
flag = DLGSet(MyDLG, ScrB_Ld, 27, DLG_RANGEMax)
flag = DLGSet(MyDLG, ScrB_Ld, 2, DLG_RANGEmin)
flag = DLGSet(MyDLG, ScrB_Ld, 18, DLG_POSITION)
! Для эл-та Control Box nvalue:
flag = DLGGet(MyDLG, ScrB_Ld, Ld, DLG_POSITION); Ld = Ld*5
Write(String, *) Ld
flag = DLGSet(MyDLG, Lab_Ld, adjustl(String)) ! запись значения в Lab_LDisk
! Для эл-та Scroll Bar "ScrB_FiMax":
flag = DLGSet(MyDLG, ScrB_FiMax, 43, DLG_RANGEMax) ! использовать для угла
flag = DLGSet(MyDLG, ScrB_FiMax, 1, DLG_RANGEmin) ! использовать для угла
flag = DLGSet(MyDLG, ScrB_FiMax, 24, DLG_POSITION) ! использовать для угла
flag=DLGSet(MyDLG, Lab_ERROR, " T( 120 град.) = T( 0,0... град.) * 1.37288 ")
!!!flag = DLGSet(DXY, n_scroll, 30, DLG_BIGSTEP) ! не использовать
!!!flag = DLGSet(DXY, n_scroll, 1, DLG_SMALLSTEP) ! не использовать
! для эл-та Control Box nvalue:
flag = DLGGet(MyDLG, ScrB_FiMax, MaxFi, DLG_POSITION); MaxFi = MaxFi*5
Write(String, *) MaxFi
flag = DLGSet(MyDLG, Lab_FiMax, adjustl(String))
flag=DLGSetSub(MyDLG, ScrB_MAXt, InDATA) ! свяжем с полем AVALUE процедуру InDATA
flag=DLGSetSub(MyDLG, ScrB_Ld, InDATA) ! свяжем с полем n_scroll процедуру InDATA2
flag=DLGSetSub(MyDLG, ScrB_FiMax, InDATA) ! свяжем с полем n_scroll процедуру InDATA2
!
flag=DLGSetSub(MyDLG, Bat_Start, What)
flag=DLGSetSub(MyDLG, Bat_Exit, What)
!
Status=DLGModal(MyDLG) ! Отображает диалог (форму) на экране
!Status= DlgModeless(MyDLG) ! Отображает диалог (форму) на экране
End Subroutine RunDial
Subroutine InDATA(DLG, C_Name, cbType) ! Передача данных из полей диалога и контроль данных
!DEC$ ATTRIBUTES DEFAULT :: InDATA ! без этого работает, но это указано в инструкции Intel
Use FiParam
Use PenDiaL
Type(dialog) DLG
Integer(4)::C_Name, cbType, i
Character(50)::ErrText
!Integer(4) Temp
! предупредить о наличии не используемой переменной
i = cbType
flag=DLGGet(DLG, C_Name, String) ! читает из C_Name-control в строку
!Read(String,*,IOStat=ios) Temp
Select Case(C_Name)
Case(ScrB_MAXt)
flag = DLGGet(MyDLG, ScrB_MAXt, MAXt, DLG_POSITION)
Write(String, *) MAXt
flag = DLGSet(MyDLG, Lab_MAXt, adjustl(String))
Case(ScrB_Ld)
flag = DLGGet(MyDLG, ScrB_Ld, Ld, DLG_POSITION); Ld = Ld*5
Write(String, *) Ld
flag = DLGSet(MyDLG, Lab_Ld, adjustl(String))
Case(ScrB_FiMax)
flag = DLGGet(MyDLG, ScrB_FiMax, MaxFi, DLG_POSITION); MaxFi = MaxFi*5
Write(String, *) MaxFi
flag = DLGSet(MyDLG, Lab_FiMax, adjustl(String))
Write(String(1:3), "(i3)") MaxFi
Write(String(4:11), "(F8.6)") wOTfiMax(MaxFi/5)
flag=DLGSet(MyDLG, Lab_ERROR, " T( "//String(1:3)//" град.) = T( 0,0... град.) * "//String(4:11) )
End Select
If(All(If_OK)) Then
flag=DLGSet(MyDLG,Bat_Start,.True.) ! Кнопка активна
Else
flag=DLGSet(DLG,Bat_Start,.False.) ! Кнопка недоступна
End If
End Subroutine InDATA
Subroutine What(DLG,C_Name, cbType)
!DEC$ ATTRIBUTES DEFAULT :: What
Use PenDiaL
Type(dialog) DLG
Integer(4)::C_Name, cbType, i
i=cbType
If(C_Name==Bat_Start) Then
flag=.True.
Else
flag=.False.
End If
Call DLGExit(MyDLG)
If(C_Name==Bat_Exit) Then
Stop
EndIf
End Subroutine What