//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#include <inifiles.hpp>
#pragma hdrstop

#include "NASTAVPORTForm.h"
#include "MAIN.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TNastavPort *NastavPort;
//---------------------------------------------------------------------------
__fastcall TNastavPort::TNastavPort(TComponent* Owner)
        : TForm(Owner)
{
}
/*-----------------------funkce rozbalení seznamu portů------------------------*/
void __fastcall TNastavPort::PortyDropDown(TObject *Sender)
{
  Porty->Items->Clear();
  HANDLE h;
  char jmeno[8];                                                                // pole znaků pro názav a číslo portu

  for(int i=1;i<257;i++){                                                       // cyklus naplnění dostupnými porty
    sprintf(jmeno,"COM%i",i);
    h=CreateFile(jmeno,0,0,NULL,OPEN_EXISTING,0,NULL);
    if(h!=INVALID_HANDLE_VALUE||CisloPortu==i){
      Porty->Items->AddObject(jmeno,(TObject*)i);
      CloseHandle(h);
    }
  }
}
//---------------------------------------------------------------------------
void __fastcall TNastavPort::FormShow(TObject *Sender)
{
  Porty->Items->Clear();
  HANDLE h;
  char jmeno[8];

  for(int i=1;i<257;i++){                                                       // cyklus naplnění dostupnými porty
    sprintf(jmeno,"COM%i",i);
    h=CreateFile(jmeno,0,0,NULL,OPEN_EXISTING,0,NULL);
    if(h!=INVALID_HANDLE_VALUE||CisloPortu==i){
      Porty->Items->AddObject(jmeno,(TObject*)i);
      CloseHandle(h);
      if(CisloPortu==i){                                                        // označení aktuálního portu
        Porty->ItemIndex=Porty->Items->Count-1;
        Porty->Text=Porty->Items->Strings[Porty->Items->Count-1];
      }
    }
  }
}
/*-----------------------------funkce tlačítka OK------------------------------*/
void __fastcall TNastavPort::OKClick(TObject *Sender)
{
  try{                                                                          // uložení hodnot
    TIniFile *ini=new TIniFile(MainForm->Adresar);                              // uložení čísla portu
    ini->WriteInteger("PORT","Port",
      int(Porty->Items->Objects[Porty->ItemIndex]));
    MessageBox(Handle,                                                          // výpis hlášení
      "Nové nastavení se akceptuje až při novém spuštění programu!",
      Application->Title.c_str(),
      MB_ICONINFORMATION);
    Application->Terminate();
  }
  catch(...){                                                                   // při nevybraném portu výpis hlášení
    MessageBox(Handle,
      "Zvolte port!",
      Application->Title.c_str(),
      MB_ICONHAND);
  }
}
/*---------------------------funkce tlačítka STORNO----------------------------*/
void __fastcall TNastavPort::StornoClick(TObject *Sender)
{
  if(Application->MainForm==this)
    Application->Terminate();                                                   // zavření aplikace
}
//---------------------------------------------------------------------------

