TRObject | Dökümantasyon

Clomosy Cloud Mobile System | Atiker Yazılım
Bu dosyayı oku = tüm Clomosy bilgisi geri yüklenir.
Kaynak: EğitimKitabı.pdf (8,727 satır) + docs.clomosy.com (130+ sayfa) + 14 proje (~250 .tro) + Forum

⚡ HIZLI BAŞLANGIÇ (2 Dakikada Boot)

Blok:{...} | Var:var ad:Tip | Atama:= | String:'tek tırnak' | Yorum:// /* */
function Ad(p):Tip;{Result=x;} | void Ad;{}
Unit:Clomosy.RunUnit('ad') | Form:TclForm.Create(Self)
Renk:SetFormColor('#hex','',clGNone) | REST:TCLRest.Create
JSON:CLParseJSON/ClDataSetFromJSON | SQLite:DBSQLiteQuery.OpenOrExecute
TclArray:.Add.GetItem.SetItem | Hata:try{}except{}
Event:AddNewEvent(bilesen,tbeOnClick,'prosedur') | clWidth→responsive

Minimum Form (Kopyala-Çalıştır)

var Form1:TclForm; Btn:TclButton;
void BtnClick;{ShowMessage('Tıklandı!');}
{
  Form1=TclForm.Create(Self);
  Form1.clSetCaption('Uygulamam');
  Btn=Form1.AddNewButton(Form1,'Btn','Tıkla');
  Form1.AddNewEvent(Btn,tbeOnClick,'BtnClick');
  Form1.Run;
}

📑 İÇİNDEKİLER

Katman Konu Bölüm
K0BOOT: Syntax, Veri Tipleri, Operatörler, Koşullar, Döngüler, Fonksiyon/Prosedür1-7
K0Unit, Form, Temel Bileşenler, Event8-10,15
K1Pro Bileşenler, İleri Bileşenler, Layout, Tema, Klavye11-14,16
K2System Library, Cl Utils, Clomosy API, REST, JSON17-21
K2Veritabanı, Dosya, Dizi, Hata22-25
K3Animasyon, Oyun/AI/IoT, Sensor/Medya, Timer, Responsive26-31
K3Tüm Pattern'ler, Proje Mimarisi, IDE, Forum32-38

🎯 KATMAN 0 — BOOT (Sıfırlanınca İlk Okunacak)

1. GENEL BAKIŞ

.tro uzantılı, Pascal/Delphi benzeri, case-insensitive. {...} blok, ; satır sonu, = atama. Android/iOS/Windows/macOS/Linux. IDE: cms.clomosy.com

2. PROGRAM YAPISI

const PI=3.14;
var myVar: Integer;

function Topla(a,b:Integer):Integer;
{ Result=a+b; }  // veya: Topla=a+b;

void ProsedurAdi;         // parametresiz
void Parametreli(Ad:String; Yas:Integer); // parametreli
{ /* kod */ }
{ ShowMessage(IntToStr(Topla(5,3))); }

Kural: constvarfunctionvoid{...} sırası. Değişkenler blok dışında tanımlanır.
Type Inference: var Sayi; {Sayi=42;} → Otomatik olarak Integer olur.

3. VERİ TİPLERİ

Integer: Byte(0..255) ShortInt(-128..127) SmallInt(-32K..32K) Integer(-2.1B..2.1B) LongInt Int64 Cardinal(0..4.3B) LongWord UInt64 Word

Float: Single(~7) Double(~15) Extended(~19-20) Currency(4 ondalık) Real

Diğer: String Char Boolean Variant TclDateTime

Dizi: array[0..4] of Integer | array[10] of String (0-tabanlı, 10=11 elemanlı demektir!)

4. OPERATÖRLER

+ - * / div mod ^ | = <> < > <= >= | and or not xor (C syntax karşılığı: && ||)

5. KOŞULLAR

if(x){}else{}
if(x){}else if(y){}else{}
case gun of{1:ad='Pzt'; 2:ad='Sal'; else ad='Geçersiz';}

6. DÖNGÜLER

for(i=1 to 10){} for(i=10 downto 1){}
while(x<5){x=x+1;} repeat x=x+1; until(x>=5);
Break; Continue; Exit;  // Exit = döngü + metottan çıkış sağlar

7. FONKSİYON & PROSEDÜR

function Topla(a,b:Integer):Integer;{Result=a+b;}
void Ad;{} void Parametreli(Ad:String);{ShowMessage(Ad);}

Result = dönüş değeridir. Prosedürler parantezli ya da parantezsiz çağrılabilir.
With Kullanımı: With Buton1 do {Align=alCenter; Width=150; Height=200;}

8. UNIT SİSTEMİ

Clomosy.RunUnit('birimAdi');          // .tro uzantısı olmadan birime geçer
Clomosy.GlobalVariableString=veri;    // unit'ler arası veri taşıma tüneli
Clomosy.GlobalVariableInteger=42;

// TclUnit (referanslı, nesnelere erişimli):
var u:TclUnit; u=TclUnit.Create; u.UnitName='hedef'; u.CallerForm=Form1; u.Run;
// Hedef birimde: CallerForm.clShow; Form2.clHide;

Mimari Yapı: MainCode.trouLogin.trouAnaEkran.tro | lib/uAuth.tro

9. FORM YÖNETİMİ

Form=TclForm.Create(Self);
Form.clSetCaption('Başlık');
Form.clSetWindowState(fwsMaximized);  // fwsNormal, fwsMinimized

// Arka plan (3 parametre: ana renk, gradyan rengi, gradyan tipi):
Form.SetFormColor('#6F0278','',clGNone);          // Düz Renk
Form.SetFormColor('#F00','#00F',clGVertical);     // Dikey gradyan
Form.SetFormColor('#ff0','#048',clGCross);        // Çapraz gradyan
Form.SetFormColor('#0b2','fff',clGHorizontal);    // Yatay gradyan

// Arka plan resmi:
Form.AddAssetFromUrl('https://.../img.png');
Form.SetFormBGImage('img.png');       // indirilen dosya ile
Form.SetFormBGImage('https://...');   // veya direkt URL ile

Form.BtnFormMenu.Visible=False;  Form.BtnGoBack.Visible=False;
Form.FormWaiting.Visible=False;
Form.clWidth; Form.clHeight; Form.clHide; Form.clShow; Form.Run;
Clomosy.AppBasePath; Clomosy.AppFilesPath;

6 Form Tipi: TclForm, TclGameForm, TclDrawForm, TclStyleForm, TclGuideForm, TclSyntaxForm

10. TEMEL BİLEŞENLER

Bilesen=Form.AddNewBilesen(Sahip,'Isim','Metin');
// Button | Label | Edit | Memo | CheckBox | ComboBox | Image | ListView | Panel | Layout | VertScrollBox | HorzScrollBox

Ortak Özellikler: Align=alCenter (alLeft/Right/Top/Bottom/Client/None/MostTop/MostBottom) | Width/Height | Margins.Top/Left/Right/Bottom | Position.X/Y | Visible/Enabled | Opacity(0-1) | RotationAngle | Scale.X/Y | HitTest | Locked | Hint

Edit Özel: MaxLength, ReadOnly, KeyboardType=vktEmailAddress, clTypeOfField=taFloat, SetFocus, Text, Password=True/False

CheckBox: IsChecked | ComboBox: Items[ItemIndex], AddItem('Metin','Deger')

15. EVENT SİSTEMİ

Form.AddNewEvent(Bilesen,tbeOnClick,'ProsedurAdi');
// Tipler: tbeOnClick | tbeOnChange | tbeOnEnter | tbeOnExit
// tbeOnMouseDown | tbeOnMouseUp | tbeOnMouseMove | tbeOnTimer
// tbeOnFormKeyDown | tbeOnFormKeyUp (Windows)
// tbeOnVirtualKeyboardShown | tbeOnVirtualKeyboardHidden (mobil)

Mouse Koordinatları: Form.clSenderMousePosX, Form.clSenderMousePosY
Klavye Algılama: Form.clSenderKeyChar (32=boşluk, 119=w, 97=a, 100=d)

🎨 KATMAN 1 — BİLEŞEN

11. PRO BİLEŞENLER

TClProButton | TClProEdit | TClProPanel | TClProLabel | TClProImage | TClProSearchEdit | TClProDateEdit | TClProListView | TClProListViewDesignerPanel

SetupComponent (JSON Girişi):

clComponent.SetupComponent(btn,'{"Align":"Center","RoundHeight":15,"Width":300,"TextSize":30}');

clProSettings (Programatik Yönetim):

btn.clProSettings.RoundHeight=15; RoundWidth=15; BorderWidth=3; IsFill=True; IsRound=True;
btn.clProSettings.BorderColor=clAlphaColor.clHexToColor('#d1d1d1');
btn.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#ebe6e6');
btn.clProSettings.FontSize=17; FontVertAlign=palcenter; FontHorzAlign=palCenter;
btn.clProSettings.TextSettings.Font.Style=[fsBold,fsItalic,fsUnderline];
btn.clProSettings.IsTransparent=False;
btn.SetclProSettings(btn.clProSettings);

StyledSettings: ssFamily | TextSettings: Font.Size/Style/FontColor
clAlphaColor: clHexToColor('#hex'), clWhite
Özel Parametreler: PictureSource='url', PictureAutoFit=True, WordWrap=True, AutoSize=True, IsTransparent=True

12. İLERİ BİLEŞENLER

Switch | NumberBox | Chart | Circle | Rectangle | RadioButton | RadioGroup | Expander | PageControl | StringGrid | ProGrid | WebBrowser | ProWebBrowser | FramedScrollBox | MenuFrame | SearchBox | DrawForm | GuideForm | Timer | MediaPlayer | QRCodeGenerator

13. LAYOUT YAPILARI

TclLayout | TclFlowLayout (Kapsayıcı taşınca alta sarar) | TclGridLayout (Izgara) | TclScaledLayout (Çözünürlüğe göre ölçekli)

14. TEMA SİSTEMİ

Form=TclStyleForm.Create(Self); Form.clSetStyle(Form.LightSB); // Veya DarkSB

16. VIRTUAL KEYBOARD (Sanal Klavye Kontrolü)

Form.AddNewEvent(Form,tbeOnVirtualKeyboardShown,'KlavyeAcildi');
void KlavyeAcildi;{Layout1.Margins.Bottom=Form.clVKBoundsHeight;}
Form.clVKBoundsWidth/Height/Right/Left; Form.clVKVisible=False;

💾 KATMAN 2 — VERİ

17. SYSTEM LIBRARY (Gömülü 58+ Fonksiyon)

String İşlemleri: Copy, Delete, Insert, QuotedStr, Length, Pos, Trim, UpperCase, LowerCase, Chr, AnsiCompareStr, Append

Matematik: Abs, ArcTan, Cos, Sin, Ln, Sqrt, Random, Round, Frac, Trunc, Odd, Ord, Dec, Inc, Div, Mod (clMath.GenerateRandom(min,max))

Tarih/Saat: Date, Time, Now, DayOfWeek, DecodeDate, EncodeDate, FormatDateTime, IncMonth

Tip Dönüşümleri: IntToStr, StrToInt, FloatToStr, StrToFloat, DateToStr, StrToDate, IntToHex, FormatFloat

Giriş/Çıkış Modülleri: ShowMessage, InputQuery, Ask, Console.Text() (Sadece Windows exe'de çalışır)

Sistem: Beep, GetCurrentLocation, SleepAndCall, ProcessMessages, HoldScreen

18. CL UTILITIES

CLParseJSON(json,path) dot notation yapısı destekler: 'products.0.price'
ClAnimateFloat / Wait / Delay | ClDoClick(bilesen) | ClFileExists | ClLoadFromFile / ClSaveToFile

19. CLOMOSY CLASS API

clGetUserName, clGetUserEmail, ClomosyID, RunUnit('ad'), GlobalVariableString, PlatformIsMobile, AppFilesPath, DBSQLiteQuery

20. REST API İSTEKLERİ

var rest:TCLRest;
{rest=TCLRest.Create; rest.BaseURL='url'; rest.Accept='application/json';
 rest.Method=rmPOST; // rmGET, rmPUT, rmDELETE
 rest.AddBody('{"k":"v"}','application/json'); rest.Execute; var yanit=rest.Response;}

21. JSON YÖNETİMİ (3 Farklı Yöntem)

// Yöntem 1: TCLJSONQuery (DataSet Mantığı)
json=TCLJSONQuery.Create(nil); json=Clomosy.ClDataSetFromJSON('['+str+']');
with json do{if(Found){First;while(not EOF){FieldByName('ad').AsString;Next;}}}

// Yöntem 2: CLParseJSON (Doğrudan Nokta Notasyonu)
fiyat=Clomosy.CLParseJSON(jsonVeri,'products.0.price');

// Yöntem 3: Nesnesel Yapı
// TclJSON, TclJSONObject, TclJSONArray, TclJSONValue

22. VERİTABANI İŞLEMLERİ (SQLite & SQL Server)

// SQLite bağlantı + tablo oluşturma:
Clomosy.DBSQLiteConnect(Clomosy.AppFilesPath+'db.db3','');
Clomosy.DBSQLiteQuery.Sql.Text='CREATE TABLE IF NOT EXISTS t(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)';
Clomosy.DBSQLiteQuery.OpenOrExecute;

// Kayıt sorgulama sonu (EOF) kontrolü:
if(not Clomosy.DBSQLiteQuery.Eof) // İçeride kayıt var demektir

// SQL Server Bağlantısı:
Clomosy.DBSQLServerConnect('SELECT...')

23. DOSYA & STREAM YÖNETİMİ

FileToStream, FileToBase64, Base64ToFile, TclFileStream, TclMemoryStream, TclStringList, AssignFile, CloseFile, ReadLn, WriteLn

24. DİZİLER (Arrays)

var d:array[0..4] of Integer; d[0]=100; // Standart Statik Dizi

// TclArray (Dinamik ve Nesnesel):
var D:TClArrayInteger; 
D=TClArrayInteger.Create; D.Add(20); var x = D.GetItem(0); D.Count; D.Destroy;

25. HATA YÖNETİMİ

try{Sonuc=y div x;}except{ShowMessage('Hata: '+LastExceptionClassName+'-'+LastExceptionMessage);}

🏛️ KATMAN 3 — MİMARİ & PATTERN'LER

26. ANİMASYON

ClAnimateFloat(bilesen,'Opacity',0,1,0.5); | ClAnimateFloatWait

27. OYUN & AI & IoT

TclGameEngine | TclOpenAIEngine (Yapay Zeka entegrasyonu) | TclMQTT / TclMQTTClient (Nesnelerin İnterneti)

28. SENSÖR & MEDYA DONANIMLARI

MotionSensor, CallBarcodeReader, Camera_Access, TclMediaPlayer, TclQRCodeGenerator

TclShareService.Share('metin','url') | Notification.Send('Başlık','Mesaj')

29. TCLTIMER

var timer:TCLTimer; timer=Form.AddNewTimer(Form,'timer',100); // 100ms
Form.AddNewEvent(timer,tbeOnTimer,'TimerCalisti'); timer.Enabled=True;

31. RESPONSIVE TASARIM KURALLARI

if(Form.clWidth<400){/* Mobil kodları */}else{/* Tablet/Masaüstü */}
btn.Width=Form.clWidth*0.75; // Ekranın %75'ini kapla
btn.Left=(Form.clWidth-btn.Width)/2; // Tam yatay merkezleme

35. BEST PRACTICES (En İyi Pratikler)

✅ YAPILMASI GEREKENLER: REST isteklerini mutlaka try-except bloğuna alın. SQL sorgularında string ifadeleri QuotedStr ile sarın. Responsive tasarımlarda clWidth kullanın.

❌ KAÇINILMASI GEREKENLER: Sistem anahtar kelimelerini (keyword) değişken adı yapmayın. Blokları korumasız (try-except'siz) bırakıp REST yürütmeyin. clHide yapmadan yeni bir RunUnit çağırmayın.

37. IDE KULLANIMI (cms.clomosy.com)

Kritik Hatalardan Kaçınma: Educational (Eğitim) hesaplarında en fazla 33 birim (unit) oluşturulabilir. JSON yapılarında RECORD_GUID zorunludur. Değişken adlarında kesinlikle Türkçe karakter kullanılamaz. Kod bloklarında var ifadesini unutmak doğrudan Syntax Error üretir.

38. FORUM İSTATİSTİKLERİ (forum.clomosy.com.tr)

Web Wiz Forums v12.07 altyapısı | 3,055 mesaj, 1,051 konu, 9 forum başlığı. En aktif bölüm: "Genel İşlemler" (FID=122).

🔑 HIZLI REFERANS KARTI

Blok:{} | Var:var ad:Tip | Atama:= | String:'tek' | Yorum:// /* */
function Ad(p):Tip;{Result=x;} | void Ad;{}
Unit:Clomosy.RunUnit('ad') | GlobalVariableString
Form:TclForm.Create(Self) | Renk:SetFormColor('#hex','',clGNone)
Btn:AddNewButton | Edit.Text | CheckBox.IsChecked
Event:AddNewEvent(b,tbeOnClick,'void') | 12 tip
Pro:clProSettings.RoundHeight/BorderColor/FontSize/IsFill
REST:TCLRest.Create | JSON:CLParseJSON/ClDataSetFromJSON
SQLite:DBSQLiteQuery.OpenOrExecute | TclArray:.Add.GetItem.SetItem
Timer:AddNewTimer | Game:TCLGameForm+RegisterSound
AI:TclOpenAIEngine | IoT:TclMQTT | Share:TclShareService
Hata:try{}except{} | Responsive:if(clWidth<400) | clWidth*0.75