Delphiの If ~ then ~ else のコーディングで注意事項があります。
【正常な例】
if Data = 1 then ... else ...
【不具合事例】 begin end を使用しないで複数個を判断する処理
if Data = 1 then ... else if Data = 2 then ... else if Data = 3 then ... else if Data = 4 then ...
この場合、最初の Data=1 の条件時のみ実行され、その他は無視されてしまいま す。 ついやりがちな処理です。注意してください。 (なにやら納得できないところもありますが、Delphiコーディング規約に記入 されているとのことです。)
【不具合修正例】
if Data = 1 then begin ... end else if Data = 2 then begin ... end else if Data = 3 then begin ... end else if Data = 4 then begin ... end