Hi,
so ein Glück, ich hatte das Programm ja schon fertig^^
Spoiler anzeigen
#NoTrayIcon
#include <Constants.au3>;Hier sind $IDYes usw. deklariert..
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
;<AutoItScript>
Opt('MustDeclareVars', 0) ;0=ohne, 1=erfordert Variablen-Deklaration
Const $ScriptType='GUI' ; Steht hier Console oder nur c erkennt Msg() daß es ein CUI.Programm ist..
;+----------------------------------------------------------------------------+
;| Header: Bestimmen der Übergabeparameter |
;| ( Alles Strings(!!!), bis auf $ArgC ) |
;| FontAnzeigeCheck: |Il1 sind Alt-0124, Großes i, Kleines L, Eins |
Const $Autor='hhfp.au3 ©2010 by ytwinky, MD'; |
;| EMail: [email='PIII1kSystem-AutoIt3Forum@yahoo.de'][/email] |
;| AutoIt3-Version: 3.3.6.1, Beta: -.-.-.- |
;| Editor: SciTE 1.79d, feste Schriftart |
;| Zweck : Schablone für den Anfang, nach Bedarf anpassen |
;| Tab auf 2 setzen wg. Lesbarkeit |
;+----------------------------------------------------------------------------+
Const $Bewertung[2]=[' nicht', ''], $rot=0xFF0000, $gruen=0x008F00, $Farben[2]=[$rot, $gruen]
Global $Epsilon=0.001, $nk='s', $fmt='%' &$nk
Dim $ar=60, $ah=10, $br=10, $bh=10, $cr=35, $ch=35, $p, $q, $h, $hp, $s, $sab
;h=hp=25, p=q=25
;(Be-)Rechnen wir's doch nach..
;<AutoItFunctions>#include <ButtonConstants.au3>
#Region ### START Koda GUI section ### Form=D:\Sprachen\AutoIt3\Au3\kxf\hhfp.kxf
$hhfp=GUICreate('hhfp', 573, 667, 189, 111)
GUICtrlCreateGroup('', 0, -4, 571, 669);Main
GUICtrlCreateLabel('Berechnung von Höhe und Höhenfußpunkt in einem Dreieck', 6, 10, 560, 26)
GUICtrlSetFont(-1, 14, 800, 0, 'Arial')
GUICtrlSetColor(-1, 0x000080)
GUICtrlSetTip(-1, $Autor)
GUICtrlCreateLabel('(Überprüfung, ob ein Punkt auf einer gegebenen Geraden liegt..)', 84, 38, 382, 20)
GUICtrlSetFont(-1, 10, 400, 0, 'MS Sans Serif')
$Skizze=GUICtrlCreatePic('G:\Grafik\hhfp_Skizze.gif', 116, 58, 344, 145)
GUICtrlCreateGroup('gegebene Gerade', 6, 204, 559, 89)
GUICtrlCreateLabel('Rechtswert', 176, 221, 58, 17)
GUICtrlCreateLabel('Hochwert', 324, 221, 50, 17)
GUICtrlCreateLabel('Punkt A', 87, 243, 42, 17)
$efar=GUICtrlCreateInput('10', 152, 240, 141, 21)
$efah=GUICtrlCreateInput('10', 296, 240, 141, 21)
GUICtrlCreateLabel('Punkt B', 86, 267, 42, 17)
$efbr=GUICtrlCreateInput('60', 152, 264, 141, 21)
$efbh=GUICtrlCreateInput('10', 296, 264, 141, 21)
GUICtrlCreateGroup('', -99, -99, 1, 1)
GUICtrlCreateGroup('zu untersuchender Punkt', 6, 294, 559, 91)
GUICtrlCreateLabel('Rechtswert', 176, 311, 58, 17)
GUICtrlCreateLabel('Hochwert', 324, 311, 50, 17)
GUICtrlCreateLabel('Punkt C', 86, 333, 42, 17)
$efcr=GUICtrlCreateInput('35', 152, 330, 141, 21)
$efch=GUICtrlCreateInput('35', 296, 330, 141, 21)
GUICtrlCreateLabel('erlaubte Abweichung', 24, 357, 104, 17)
$eferlaubt=GUICtrlCreateInput($Epsilon, 152, 354, 141, 21)
$lblBewertung=GUICtrlCreateLabel('', 298, 356, 250, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlCreateGroup('', -99, -99, 1, 1)
GUICtrlCreateGroup('berechnet', 6, 387, 559, 225)
GUICtrlCreateEdit('', 12, 410, 133, 97, $ES_READONLY, 0)
GUICtrlSetData(-1, StringFormat('Berechnete Werte haben\r\ndie selbe Einheit, wie die\r\neingegebenen Koordinaten\r\n(also auch die Proben..)'))
GUICtrlCreateGroup('', 152, 396, 407, 117)
GUICtrlCreateLabel('c', 272, 410, 10, 17)
$efsab=GUICtrlCreateInput('', 296, 407, 141, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlCreateLabel('p', 272, 435, 10, 17)
$efp=GUICtrlCreateInput('', 296, 432, 141, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlCreateLabel('q', 272, 460, 10, 17)
$efq=GUICtrlCreateInput('', 296, 457, 141, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlCreateLabel('h', 272, 487, 39, 17)
$efh=GUICtrlCreateInput('', 296, 484, 141, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlCreateGroup('', -99, -99, 1, 1)
GUICtrlCreateGroup('Berechnungsproben', 10, 513, 549, 95)
GUICtrlCreateLabel('Differenzen(erlaubt=0)', 302, 531, 108, 17)
GUICtrlCreateLabel('c=p+q', 116, 556, 34, 17)
$efc=GUICtrlCreateInput('', 156, 553, 141, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetTip(-1, '=Strecke von A nach B(Soll)')
$efDiffSab=GUICtrlCreateInput('', 300, 553, 141, 21)
GUICtrlCreateLabel("h'", 136, 581, 18, 17)
$efhp=GUICtrlCreateInput('', 156, 578, 141, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
$efDiffh=GUICtrlCreateInput('', 300, 578, 141, 21)
GUICtrlCreateGroup('', -99, -99, 1, 1)
GUICtrlCreateGroup('', -99, -99, 1, 1)
GUICtrlCreateGroup('', 6, 614, 559, 41) ;bedienfeld
$cmbnk=GUICtrlCreateCombo('Nachkommastellen(default=0)', 12, 626, 163, 25)
GUICtrlSetData(-1, '1|3|5|7|E-Format|*')
$btnBerechnen=GUICtrlCreateButton('Berechnen', 261, 625, 75, 25, $WS_GROUP)
GUICtrlSetFont(-1, 8, 800, 0, 'MS Sans Serif')
$btnQuit=GUICtrlCreateButton('Quit', 484, 625, 75, 25, $WS_GROUP)
GUICtrlSetFont(-1, 8, 800, 0, 'MS Sans Serif')
GUICtrlCreateGroup('', -99, -99, 1, 1)
GUICtrlCreateGroup('', -99, -99, 1, 1) ;Main
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $btnQuit
Exit
Case $efar, $efah, $efbr, $efbh, $efcr, $efch, $eferlaubt
DisplayClear()
Case $cmbnk
$nk=GUICtrlRead($cmbnk)
Switch StringLower(StringLeft($nk, 1))
Case 'n', '*'
$fmt='%s'
Case '1'
$fmt='%.1f'
Case '3'
$fmt='%.3f'
Case '5'
$fmt='%.5f'
Case '7'
$fmt='%.7f'
Case 'e'
$fmt='%.14e'
Case '*'
$fmt=''
EndSwitch
DisplayNk()
Case $btnBerechnen
$ar=GUICtrlRead($efar)
$ah=GUICtrlRead($efah)
$br=GUICtrlRead($efbr)
$bh=GUICtrlRead($efbh)
$cr=GUICtrlRead($efcr)
$ch=GUICtrlRead($efch)
$h=HHFP($ar, $ah, $br, $bh, $cr, $ch, $p, $q, $hp, $sab)
$h=HHFP($ar, $ah, $br, $bh, $cr, $ch, $p, $q, $hp, $sab)
DisplayNk()
EndSwitch
WEnd
Func HHFP($ARechts, $AHoch, $BRechts, $BHoch, $CRechts, $CHoch, byRef $p, byRef $q, byRef $hp, byRef $ab)
Local $bc=Sqrt(($BRechts-$CRechts)^2+($BHoch-$CHoch)^2), $ac=Sqrt(($ARechts-$CRechts)^2+($AHoch-$CHoch)^2)
$ab=Sqrt(($ARechts-$BRechts)^2+($AHoch-$BHoch)^2)
$p=($ab*$ab+$ac*$ac-$bc*$bc)/(2*$ab)
$q=($ab*$ab+$bc*$bc-$ac*$ac)/(2*$ab)
$h=Sqrt($bc*$bc-$q*$q)
$hp=Sqrt($ac*$ac-$p*$p)
Return $h
EndFunc
Func DisplayNk()
Local $i=$h=0
If Not $i Then $i=Abs($h)<=GUICtrlRead($eferlaubt); $h ist<>0, prüfen, ob Abweichung erlaubt..
GUICtrlSetData($efsab, StringFormat($fmt, $sab))
GUICtrlSetData($efp, StringFormat($fmt, $p))
GUICtrlSetData($efq, StringFormat($fmt, $q))
GUICtrlSetData($efh, StringFormat($fmt, $h))
GUICtrlSetData($efc, StringFormat($fmt, $p+$q))
GUICtrlSetData($efDiffSab, StringFormat('%g', $sab-$p-$q))
GUICtrlSetData($efhp, StringFormat($fmt, $hp))
GUICtrlSetData($efDiffh, StringFormat('%g', $h-$hp))
GUICtrlSetData($lblBewertung, 'Punkt C liegt' &$Bewertung[$i] &' auf der Geraden AB')
GUICtrlSetColor($lblBewertung, $Farben[$i])
EndFunc
Func DisplayClear()
GUICtrlSetData($efsab, '')
GUICtrlSetData($efp, '')
GUICtrlSetData($efq, '')
GUICtrlSetData($efh, '')
GUICtrlSetData($efc, '')
GUICtrlSetData($efDiffSab, '')
GUICtrlSetData($efhp, '')
GUICtrlSetData($efDiffh, '')
GUICtrlSetData($lblBewertung, '')
EndFunc
Func Msg($What, $Title=$Autor, $Icons=0, $ErrLevel=0)
Local $RetWert
Switch StringLower($ScriptType)
Case 'c', 'console', 'cui'
ConsoleWrite($Title &@CrLf &$What)
$RetWert=0
Case Else
$RetWert=MsgBox($Icons, $Title, $What)
EndSwitch
If $ErrLevel Then Exit $ErrLevel
Return $RetWert
EndFunc
;</AutoItScript>
[/autoit]
Viel Spaß damit..
Gruß
ytwinky